You can access the attribute value as follows:
from elementtree.ElementTree import XML, SubElement, Element, tostring text = """ <root> <phoneNumbers> <number topic="sys/phoneNumber/1" update="none" /> <number topic="sys/phoneNumber/2" update="none" /> <number topic="sys/phoneNumber/3" update="none" /> </phoneNumbers> <gfenSMSnumbers> <number topic="sys2/SMSnumber/1" update="none" /> <number topic="sys2/SMSnumber/2" update="none" /> </gfenSMSnumbers> </root> """ elem = XML(text) for node in elem.find('phoneNumbers'): print node.attrib['topic']
forget to say if your version of ElementTree is greater than 1.3, you can use XPath:
elem.find('.//number[@topic="sys/phoneNumber/1"]')
http://effbot.org/zone/element-xpath.htm
or you can use this simple one:
for node in elem.findall('.//number'): if node.attrib['topic']=="sys/phoneNumber/1": tag = SubElement(node,'TagName') tag.attrib['attr'] = 'AttribValue'
source share