如何从具有特定值的属性的 XML 文件中获取元素 [英] How can I get element from XML file with attribute having specific value

查看:34
本文介绍了如何从具有特定值的属性的 XML 文件中获取元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

XML 文件:

<Node name="node1">
   <Node name="node2">
      <Node name="node3">
         <Node name="node4">
           ...
         </Node>
      </Node>
   </Node>
</Node>

如何选择或获取具有值为node3"(或任何特定值)的name"属性的Node"对象?

How to select or get "Node" object with "name" attribute having value as "node3" (or any specific value)?

目前我正在使用 xml.etree.ElementTree

Currently I am using xml.etree.ElementTree

from xml.etree import ElementTree

document = ElementTree.parse( 'filename.xml' )
nodes = document.find( 'Node')
for node in nodes:
    if node.attribute('name') == "node3":
        print("found")
        break

是否有更好的方法来避免 for 循环?我对其他 XML 解析器模块也很好.

Is there better way to avoid for loop? I am fine with other XML parser modules as well.

我正在使用 python 2.7

推荐答案

With lxml你可以使用 XPath:

With lxml you can use XPath:

In [1]: from lxml.etree import parse

In [2]: tree = parse('nodes.xml')

In [3]: tree.xpath('//Node[@name="node3"]')
Out[3]: [<Element Node at 0x180ec30>]

有多个谓词:

In [4]: tree.xpath('//Node[@name="node3"][@value="value3"]')
Out[4]: [<Element Node at 0x155d1e0>]

这篇关于如何从具有特定值的属性的 XML 文件中获取元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆