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