Получить имена и значения атрибутов из 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() или любой из других методов, доступных на питоне 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, его тег, текст и атрибут, который он будет работать для 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
Другие вопросы по тегам