2011-11-11 7 views
1

xPathNavigator.evaluate() 호출이 노드를 반환하지 않는 이유를 확인하는 방법이 있습니까?xpathnavigator에서 결과 가져 오기

<Vehicles> 
    <car> 
     <wheels>4</wheels> 
     <seats>5</seats> 
    </car> 
</Vehicles> 

다음과 같은 XPath 식 : 나는 노드가 "때문에 절의 선택되지 않았 음을 표시 일종의 싶습니다

//Vehicles[((car[wheels = 4 and seats = 2]))] 

다음과 같은 XML 문서 주어진 예를 들어

좌석 = 2 "바퀴의 숫자 때문에 아닙니다.

어떤 방법으로 가능합니까?

답변

0

다음 XPath 식 :

//Vehicles[((car[wheels = 4 and seats = 2]))] 

내가 노드가 있기 때문에 바퀴의 수 "석 = 2"때문이 아니라 절의 를 선택하지 않은 것을 표시의 일종을하고 싶습니다.

어떤 방법으로 가능합니까?

당신이이 식을 사용하는 경우이 가능할 것이다 : 결과가 null (또는있는 XmlNode의 빈 컬렉션)이 아닌 경우 여기

//Vehicles[car[wheels = 4]] 

을, 당신은 알게 될 것이다 그 다음 표현의 경우 :

//Vehicles[car[wheels = 4][seats = 2]] 

은 바퀴가 4 개인 바퀴가 car이지만 정확히 2 개의 좌석이없는 것입니다.

+0

테스트 할 xPath 쿼리가 런타임에 생성되므로 xPath 쿼리를 직접 작성하여 테스트 할 수 없습니다. "where"절을 분리 할 수있는 방법이 없다면 – user1041808

+0

@ user1041808 : 질문을 편집하고 설명해야합니다. XPath 표현식의 런타임 생성을 제어 할 수없는 경우 XPath 표현식을 처리하고 그 중 두 가지를 만드는 것은 불가능합니다. 물론 자신의 XPath 파서를 작성하지 않는 한 불가능합니다. –

1

"왜"당신이 자동화 할 수있는 질문이 아닙니다. XPath 표현식이 노드를 선택하지 않는 수많은 이유가 있습니다. 노드가 잘못된 네임 스페이스에 있으면 어떻게 될까요? "// Vehicles"대신 "// vehicles"라고 쓰면 어떨까요?

당신이 할 수있는 최선의 방법은 확인하고 테스트하려는 조건의 종류를 정의하는 것입니다.

관련 문제