Hi all,

I have a understanding problem with return values from xmltodict.

I have a xml file. Content:

<?xml version="1.0" encoding="utf-8" ?>
<profiles>
  <profile id='visio02' revision='2015051501' >
  <package package-id='0964-gpg4win' />
  </profile>
</profiles>
<!--
-->

With code

__f_name = '<path_to_file>'
with open(__f_name) as __fd:
    __doc = xmltodict.parse(__fd.read())
   
__doc

I get

OrderedDict([(u'profiles', OrderedDict([(u'profile', OrderedDict([(u'@id', 
u'visio02'), (u'@revision', u'2015051501'), (u'package', 
OrderedDict([(u'@package-id', u'0964-gpg4win')]))]))]))])

If I use

__doc['profiles']['profile']['package'][0]['@package-id']

I get 

Traceback (most recent call last):
  File "<input>", line 1, in <module>
KeyError: 0

If I change xml file like this:

<?xml version="1.0" encoding="utf-8" ?>
<profiles>
  <profile id='visio02' revision='2015051501' >
  <package package-id='0964-gpg4win' />
  <package package-id='0965-gpg4win' />
  </profile>
</profiles>

and run code from above the result is:

OrderedDict([(u'profiles', OrderedDict([(u'profile', OrderedDict([(u'@id', 
u'visio02'), (u'@revision', u'2015051501'), (u'package', 
[OrderedDict([(u'@package-id', u'0964-gpg4win')]), 
OrderedDict([(u'@package-id', u'0965-gpg4win')])])]))]))])

No prints __doc['profiles']['profile']['package'][0]['@package-id']:

u'0964-gpg4win'

Can everybody explain this?

Many thanks in advance

-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to