XPath没有返回值的问题

时间:2015-05-19 13:03:21

标签: xml xpath xquery

我是使用XPath和XQuery的新手,我似乎无法弄清楚为什么我无法使用此XPath语句从以下XML返回OrderID:

//OrderID[1]/text()

为什么它找不到OrderID或者比使用这个XPath更深入了?

//soap:Body

这是XML:

<soap:Envelope xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
               xmlns:xsd="http://www.w3.org/2001/XMLSchema"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soap:Body>
      <SubmitOnlineSearchResponse xmlns="http://eservices.diligenz.com/">
         <SubmitOnlineSearchResult>
            <return>
               <orderInfo>
                  <OrderID>75124507</OrderID>
               </orderInfo>
            </return>
         </SubmitOnlineSearchResult>
      </SubmitOnlineSearchResponse>
   </soap:Body>
</soap:Envelope>

1 个答案:

答案 0 :(得分:2)

因为OrderID位于http://eservices.diligenz.com/名称空间中。

如果您可以修改消息,请添加

xmlns:di="http://eservices.diligenz.com/"

soap:Envelope以及其他名称空间声明,并将XPath更改为

//di:OrderID[1]/text()

如果您无法修改消息,请使用托管环境的设施将名称空间前缀绑定到名称空间,并将di绑定到http://eservices.diligenz.com/,以便上述XPath能够正常工作。