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
答案 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>]