Получить имена атрибутов и значения из ElementTree
у меня есть XML <root>
элемент с несколькими атрибутами. Я использовал ElementTree
пакета.
после того, как я проанализировал дерево из xml-файла, я получаю корень документа, но я хочу получить запрошенный атрибут или даже весь список атрибутов.
<root a="1" b="2" c="3">
</blablabla>
</root>
как я могу получить все имена атрибутов и значений для <root>
элемент с ElementTree?
3 ответов
каждого Element
атрибут .attrib
это словарь; просто используйте его методы картирования чтобы спросить его, это ключи или значения:
for name, value in root.attrib.items():
print '{0}="{1}"'.format(name, value)
или
for name in root.attrib:
print '{0}="{1}"'.format(name, root.attrib[name])
или использовать .values()
или любой другой метод, доступный на python dict
.
чтобы получить индивидуальный атрибут, используйте стандарт синтаксис подписки:
print root.attrib['a']
на attrib
атрибут элемента ElementTree (например, корень, возвращаемый getroot
) является словарь. Так можно сделать, например:
from xml.etree import ElementTree
tree = ElementTree.parse('test.xml')
root = tree.getroot()
print root.attrib
который выведет, для вашего примера
{'a': '1', 'b': '2', 'c': '3'}
некоторый хороший цикл, который вы можете использовать, получит для каждого элемента xmlObject его тег, текст и атрибут он будет работать для 2 уровней XML, это не лучший способ итерации, но он может быть полезен для простых вещей...
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