【问题标题】:Getting XML attribute value with lxml module使用 lxml 模块获取 XML 属性值
【发布时间】:2014-06-16 10:33:35
【问题描述】:

如何通过 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>

我想从value 属性中获取值0.456。我正在迭代属性并获取文本,但我不确定这是执行此操作的最佳方法

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')

【问题讨论】:

    标签: python xml parsing lxml


    【解决方案1】:

    使用XPath:

    root.find('.//value').text
    

    这将为您获取第一个 value 标记的内容。

    如果您想遍历所有 value 元素,请使用 findall,这将为您提供包含所有元素的列表。

    如果您只想要&lt;stats param='someparam'&gt; 元素中的value 元素,请使路径更具体:

    root.findall("./statistics/stats[@param='someparam']/value")
    

    编辑:注意find/findallonly support a subset of XPath。如果您想使用整个 XPath (1.x) 功能,请使用 xpath 方法。

    【讨论】:

    • root.find('value').text 正是我想要的!谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-28
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    相关资源
    最近更新 更多