Xpath没有使用默认命名空间处理xml

时间:2015-08-12 10:00:13

标签: xml xslt xpath

我正在调用一个肥皂服务,它会在回复之后返回:

原始回复:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns="http://example2.com/ResultMain"
xmlns:ResponseResult="http://example.com/Result" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soapenv:Body>
      <Response>
         <result>
            <ResponseResult:errorCode xsi:nil="true"/>
            <ResponseResult:isSuccess>true</ResponseResult:isSuccess>
            <ResponseResult:message>No Data found</ResponseResult:message>
         </result>
      </Response>
   </soapenv:Body>
</soapenv:Envelope>

我想从结果中导出“message”元素的值,但无论我使用哪个xpath,它都不起作用,我得到了跟随错误。我正在网上editor上尝试。

错误:

The default (no prefix) Namespace URI for XPath queries is always '' and it cannot be redefined to 'http://example2.com/ResultMain'.

我使用的示例Xpath:

//*[local-name()='message']

但是如果我修改了服务响应并删除了默认命名空间,那么它运行正常。等。

修改后的服务响应:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 

xmlns:ResponseResult="http://example.com/Result" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soapenv:Body>
      <Response>
         <result>
            <ResponseResult:errorCode xsi:nil="true"/>
            <ResponseResult:isSuccess>true</ResponseResult:isSuccess>
            <ResponseResult:message>No Data found</ResponseResult:message>
         </result>
      </Response>
   </soapenv:Body>
</soapenv:Envelope>

所以有人可以帮我解决一下我如何绕过或以某种方式忽略默认命名空间的问题。

0 个答案:

没有答案