11

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

从 xml 文件解析树后,我得到了文档根目录,但我想获取请求的属性,甚至是整个属性列表。

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

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

4

3 回答 3

33

每个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']
于 2013-01-14T17:21:27.077 回答
9

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'}
于 2013-01-14T17:26:38.030 回答
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
于 2013-09-23T07:55:31.770 回答