2012-03-17 5 views
3

Nokogiri::XML.xpath 또는 다른 XML 파서를 사용하여 지정된 경로 밖에있는 태그를 찾을 수 있습니까?지정한 경로에 xpath 태그가 없습니다.

예를 들어. 나는 다음과 같은 XML이있는 경우 :

<root> 
    <bar>baz</bar> 
    <foo> 
    <bar>baz</bar> 
    </foo> 
</root> 

을 그 막대가 항상 foo는 내부에 존재하는 것을 알고 있지만, 그것은 또한 foo는 외부에 존재할 수 있으며, 반드시 같은 장소 매번에서, 검색하는 방법은 무엇입니까 그런 종류의 조건을 xpath로? 난 당신이 xml.xpath("//bar")을 할 수 있으며 바의 모든 인스턴스를 반환합니다 알고,하지만 난 줄이 존재하는 상위 개체를 알 수 있어야합니다

답변

4

사용 :

xml.xpath('//bar[not(ancestor::foo)]') 

이것은 foo 요소 아래 어디 아닌 모든 bar 요소를 선택합니다. (이것은 Dimitre가 만든 가정과 다르지만 어느 쪽이든 지정하지 않았습니다.)

제공된 XML 문서의 경우 루트 아래 bar 요소 하나만 선택합니다.

+0

정확히 내가 뭘 찾고 있었는지, 고마워! – Eugene

1

사용 :.

//*[not(self::foo) and bar] 

이 모든 요소를 ​​선택 XML 문서에서 foo이 아니며 자식이 bar입니다.

제공된 XML 문서의 경우 하나의 요소 (root) 만 선택합니다.

관련 문제