如何从具有特定值的属性的XML文件中获取元素

时间:2013-11-22 09:58:26

标签: python python-2.7 xml-parsing

XML文件:

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

如何选择或获取“node”对象,其中“name”属性的值为“node3”(或任何特定值)?

目前我使用的是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

避免循环有更好的方法吗?我也可以使用其他XML解析器模块。

我正在使用python 2.7

1 个答案:

答案 0 :(得分:2)

使用lxml,您可以使用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>]