的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']]