使用lxml模块获取XML属性值

时间:2014-06-16 10:33:36

标签: python xml parsing lxml

如何使用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')

这样的东西

1 个答案:

答案 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方法。