的XPath:只获取具有一定的子元素的元素
问题描述:
我有一个XML文档中的代表在以下格式的filesyste:的XPath:只获取具有一定的子元素的元素
<xml xmlns="namespace1" xmlns:ns2="namespace2">
<entry>
<id>123</id>
<ns2:content name="type">directory</ns2:content>
<ns2:content name="numErrors">3</ns2:content>
</entry>
...
<entry>
<id>456</id>
<ns2:content name="type">file</ns2:content>
<ns2:content name="docState">success</ns2:content>
</entry>
...
</xml>
我需要做的是,使用Python的lxml的,只检索entry
代表目录的对象。所有参赛作品包含<ns2:content name="docState">
对象,但我需要知道如何到该对象的文本等于directory
检索entry
对象的列表。我可以在几个不方便的步骤中做到这一点,但我宁愿有一个查询。这里是我会做的步骤的方式:
#xml_parse.py
ns={'ns1':'namespace1','ns2':'namespace2'}
for node in tree.xpath("//ns1:entry",namespaces=ns):
if node.find("ns2:content[@name='type']").text=="directory":
#do stuff with node
pass
任何人都可以解释如何内做到这一点的语句来代替,如果使用的?
感谢
答
使用下面的XPath表达式:
//ns1:entry[ns2:content[@name='type' and .='directory']]