Получить имена атрибутов и значения из 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