从ElementTree获取属性名称和值

时间:2013-01-14 17:18:23

标签: python xml elementtree xmlroot

我有一个带有多个属性的XML <root>元素。我一直在使用ElementTree包。

在我从xml文件中解析了一个树之后,我得到了文档根目录,但我希望得到所请求的属性,甚至是整个属性列表。

<root a="1" b="2" c="3">
    </blablabla>
</root>

如何使用ElementTree检索<root>元素的所有属性名称和值?

3 个答案:

答案 0 :(得分:22)

每个Element都有一个属性.attrib,它是一个字典;只需使用它mapping methods来询问它的键或值:

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上提供的任何其他方法。

要获取单个属性,请使用标准subscription syntax

print root.attrib['a']

答案 1 :(得分:8)

ElementTree元素的attrib属性(如getroot返回的根)是一个字典。所以你可以这样做,例如:

from xml.etree import ElementTree
tree = ElementTree.parse('test.xml')
root = tree.getroot()
print root.attrib

将输出,例如

{'a': '1', 'b': '2', 'c': '3'}

答案 2 :(得分: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