문제
내 XPath는 약간 녹슬 었습니다 ...이 간단한 XML 파일이 있다고 가정 해 봅시다.
<?xml version="1.0" encoding="utf-8" ?>
<States xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<States>
<StateProvince name="ALABAMA" abbrev="AL" />
....
<StateProvince name="AMERICAN SAMOA" abbrev="AS" territory="true" />
</States>
</States>
간단한 XPath 쿼리를 실행하여 모든 진정한 상태를 구문 분석하고 싶습니다 (따라서 Territory = True가있는 상태를 끌어 내지 마십시오). stateprovince [@territory! = 'true']를 시도했지만 0이되었습니다. 다른 변형은 실패한 것 같습니다. 이것은 단순해야하지만 내가 원하는 것을 찾지 않는 것 같습니다.
모든 도움이 감사합니다.
해결책
원하는 요소를 선택하는 하나의 XPath 표현식:
/*/States/StateProvince[not(@territory='true')]
주목하십시오 저것 하나는 피해야합니다 //
가능할 때마다 약어 전체 문서 (컨텍스트 노드에 루팅 된 서브 트리)가 스캔되도록 원인.
위의 xpath 표현식은 사용을 피합니다 //
약어 원래로 제공 된 XML 문서의 구조를 고려하여.
XML 문서의 구조가 완전히 알려지지 않은 경우에만 (그리고 XPath 표현식이 사용되도록 의도 된 경우에만 //
약어가 고려됩니다.
다른 팁
당신은 매우 가깝습니다 :
//StateProvince[not(@territory) or @territory != 'true']
원하는 결과를 얻을 수 있어야합니다.
이것은 작동해야합니다 :
//StateProvince[not(@territory='true')]
제휴하지 않습니다 StackOverflow