【问题标题】:How can I get element from XML file with attribute having specific value如何从具有特定值的属性的 XML 文件中获取元素
【发布时间】:2013-11-22 09:58:25
【问题描述】:

XML 文件:

<Node name="node1">
   <Node name="node2">
      <Node name="node3">
         <Node name="node4">
           ...
         </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

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

我正在使用python 2.7

【问题讨论】:

    标签: python python-2.7 xml-parsing


    【解决方案1】:

    通过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>]
    

    【讨论】:

    • 我可以添加多个属性,比如 [@name="node3" @value="value3"]?
    猜你喜欢
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 2012-03-03
    • 2013-09-12
    • 2010-12-06
    相关资源
    最近更新 更多