I have an XML
element with several attributes. I\'ve been using the ElementTree
package.
After I\'ve parsed a tree from an xml fil
The attrib
attribute of an ElementTree element (like the root returned by getroot
) is a dictionary. So you can do, for example:
from xml.etree import ElementTree
tree = ElementTree.parse('test.xml')
root = tree.getroot()
print root.attrib
which will output, for your example
{'a': '1', 'b': '2', 'c': '3'}
Each Element
has an attribute .attrib
that is a dictionary; simply use it's mapping methods to ask it for it's keys or values:
for name, value in root.attrib.items():
print '{0}="{1}"'.format(name, value)
or
for name in root.attrib:
print '{0}="{1}"'.format(name, root.attrib[name])
or use .values()
or any of the other methods available on a python dict
.
To get an individual attribute, use the standard subscription syntax:
print root.attrib['a']
Some nice loop you can use it will get for each element of the xmlObject it's tag, text and attribute it will work for 2 levels XML, it's not the best way to iterate but it can be useful for simple things...
for headTag in xmlObject.getchildren():
print headTag.tag, headTag.text, headTag.attrib
for bodyTag in headTag.getchildren():
print "\t", bodyTag.tag, bodyTag.text, bodyTag.attrib