如何使用Python ElementT提取xml属性

2024-09-30 22:20:03 发布

您现在位置:Python中文网/ 问答频道 /正文

致:

<foo>
 <bar key="value">text</bar>
</foo>

我如何获得“价值”?

xml.findtext("./bar[@key]")

抛出错误。


Tags: keytextfoovalue错误barxml价值
3条回答

这将找到名为bar的元素的第一个实例,并返回属性key的值。

In [52]: import xml.etree.ElementTree as ET

In [53]: xml=ET.fromstring(contents)

In [54]: xml.find('./bar').attrib['key']
Out[54]: 'value'

你的表情:

./bar[@key]

意思是:bar具有key属性

如果要选择属性,请使用此相对表达式:

bar/@key

意思是:子代的bar属性

当然,您需要考虑使用完全兼容的XPath引擎,如lxml

使用ElementTree在XML中获取子标记的属性值

解析XML文件并获取root标记,然后使用[0]将给出第一个子标记。类似地,[1], [2]给出了后续的子标记。获取子标记后,使用.attrib[attribute_name]获取该属性的值。

>>> import xml.etree.ElementTree as ET
>>> xmlstr = '<foo><bar key="value">text</bar></foo>'
>>> root = ET.fromstring(xmlstr)
>>> root.tag
'foo'
>>> root[0].tag
'bar'
>>> root[0].attrib['key']
'value'

如果xml内容在文件中。您应该执行以下任务以获取root

>>> tree = ET.parse('file.xml')
>>> root = tree.getroot()

相关问题 更多 >