2013-05-23 7 views
10

이 SOAP XML 파일에서 XPath 쿼리를 사용하여 7을 얻는 방법은 무엇입니까?XPath를 사용하여 기본 네임 스페이스 (네임 스페이스 접두사 없음) 요소 가져 오기

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <soap:Body> 
     <HelloWorldResponse xmlns="http://tempuri.org/"> 
      <HelloWorldResult>7</HelloWorldResult> 
     </HelloWorldResponse> 
    </soap:Body> 
</soap:Envelope> 

이 XPath 쿼리가 작동하지 않습니다. //*[name() ='soap:Body']. 네임 스페이스 접두사가 설정되어있는 경우

+0

추출하려는 것은 무엇입니까? –

+0

은 문제가되지 않습니다 – user2411903

+0

<. 그러나 문제는 아닙니다. 숫자 7을 원합니다. – user2411903

답변

18

, 당신처럼, 그것을 사용할 수 있습니다

//soap:Body 

그러나 일반 XPath를 사용하여 접두어없이 당신이 기본 네임 스페이스를 사용 얻으려고 노력하고있는 노드, 이후

, local-name()namespace-uri() 속성으로 만 액세스 할 수 있습니다. 예 :

//*[local-name()="HelloWorldResult"]/text() 

또는 :

//*[local-name()="HelloWorldResult" and namespace-uri()='http://tempuri.org/']/text() 

또는 : 당신의 XML로

//*[local-name()="HelloWorldResponse" and namespace-uri()='http://tempuri.org/']/*[local-name()="HelloWorldResult"]/text() 

, 그들은 모두 같은 결과를 줄 것이다, 텍스트 7.

+0

** ** ** 도구를 사용하여 XPath를 실행하는 경우 해당 쿼리의 네임 스페이스를 지정하고 평소와 같이 진행할 수 있습니다 (위의 해결 방법은 필요하지 않음). 말할 필요도없이, 각 도구에는이를 설정하는 특정 방법이 있습니다. – acdcjunior

+0

우수, 고맙습니다. – user2411903

+0

xmlns = "whatever"인 노드가 마지막 노드 인 경우에만이 구문이 작동합니까? 나는이 반복 된 시간을 오늘 시도하고 그것이 작동하도록 할 수 없습니다. –