Reputation: 6524
I'm trying to find out how to retrieve XML attribute values using the cElementTree iterparse in Python (2.7). My XML is something like this:
<root>
<record attr1="a" attr2="b" attr3="c" ... />
<record attr1="x" attr2="y" attr3="z" ... />
...
</root>
My code is something like this:
context = ET.iterparse(sys.stdin, events=('start','end'))
context = iter(context)
event, root = context.next()
for event, elem in context:
if event == 'end' and elem.tag == 'record':
# get the attributes!!
elem.clear()
root.clear()
I'm dealing with big data from stdin. I'm not having any luck figuring this out. Could someone please tell how (optimal?) to do this?
Upvotes: 4
Views: 4333
Reputation: 6524
Oops, staring me in the face, sort of: http://docs.python.org/2/library/xml.etree.elementtree.html#element-objects
In summary:
elem.get('attr_name', default_value)
or,
for name, value in elem.items():
or,
elem.attrib() - dictionary
I should also add that it was necessary to modify the code posted in the question:
...
if event == 'start' and elem.tag == 'record':
...
Upvotes: 4