如何使用lxml模块获取XML文件属性的值?
我的XML看起来像这样"
<process>
<name>somename</name>
<statistics>
<stats param='someparam'>
<value>0.456</value>
<real_value>0.4</value>
</stats>
<stats ...>
.
.
.
</stats>
</statistics>
</process>
我想从0.456
属性中获取值value
。我正在迭代属性并获取文本,但我不确定这是这样做的最佳方式
for attribute in root.iter('statistics'):
for stats in attribute:
for param_value in stats.iter('value'):
value = param_value.text
还有其他更简单的方法吗?像stats.get_value('value')
答案 0 :(得分:1)
使用XPath:
root.find('.//value').text
这会为您提供第一个value
标记的内容。
如果您要迭代所有value
个元素,请使用findall
,这会为您提供包含所有元素的列表。
如果您只想要value
元素中的<stats param='someparam'>
元素,请使路径更具体:
root.findall("./statistics/stats[@param='someparam']/value")
修改:请注意find
/ findall
only support a subset of XPath。如果要使用整个XPath(1.x)功能,请使用xpath
方法。