我是使用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>
答案 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能够正常工作。