2011-11-10 4 views
4

나는 다음과 같은 형식으로 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> 

내가해야 할 것은 파이썬의 LXML를 사용입니다 만 entry 검색을 디렉토리를 나타내는 객체. 모든 항목은 <ns2:content name="docState"> 개체를 포함하지만 그 개체의 텍스트가 directoryentry 개체 목록을 검색하는 방법을 알아야합니다. 몇 가지 불편한 단계에서이 작업을 수행 할 수 있지만 그 대신 하나의 쿼리 만 사용합니다.

#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 

누군가가 경우를 사용하는 대신 for 문 내에서이 작업을 수행하는 방법을 설명 할 수 : 여기 단계에서 그것을 할 것입니다 방법은?

감사

답변

5

사용하여 다음과 같은 XPath 식 :

//ns1:entry[ns2:content[@name='type' and .='directory']] 
관련 문제