Какой запрос XPath я должен использовать, чтобы добраться до узла GetLogisticsOfferDateResult?Я приложил VBScript, который я использую.Я подозреваю, что проблема связана с несколькими пространствами имен в документе.Но как мне ссылаться на второе пространство имен в XPath?
XPath
GetLogisticsOfferDateResult
Dim responseXML responseXML = '"<s:Envelope xmlns:s=""http://schemas.xmlsoap.org/soap/envelope/""><s:Body><GetLogisticsOfferDateResponse xmlns=""http://schneider-electric.com/OrderEntryService""><GetLogisticsOfferDateResult>2010-07-20</GetLogisticsOfferDateResult></GetLogisticsOfferDateResponse></s:Body></s:Envelope>"' Dim responseDoc Set responseDoc = WScript.CreateObject("MSXML2.DOMDocument.6.0") responseDoc.loadXML(responseXML) responseDoc.setProperty "SelectionNamespaces", "xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'" Dim requestedNode 'This node is not found 'Set requestedNode = responseDoc.selectSingleNode("//s:Envelope//s:Body//GetLogisticsOfferDateResponse//GetLogisticsOfferDateResult") 'This node is found Set requestedNode = responseDoc.selectSingleNode("//s:Envelope//s:Body") 'This node is found 'Set requestedNode = responseDoc.selectSingleNode("//s:Envelope") If requestedNode Is Nothing Then WScript.Echo "Node not found" Else WScript.Echo requestedNode.text End If Set responseDoc = Nothing Set LODateNode = Nothing
Оказывается, мои настройки selectionNamespaces должны были быть следующими:
responseDoc.setProperty "SelectionNamespaces", "xmlns:sc='http://schneider-electric.com/OrderEntryService' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'"
Тогда запрос XPath должен был быть:
Set requestedNode = responseDoc.selectSingleNode("//s:Envelope//s:Body//sc:GetLogisticsOfferDateResponse//sc:GetLogisticsOfferDateResult")
Вы не определили пространство имен по умолчанию для документа (http://schneider-electric.com/OrderEntryService) в своем коде.
http://schneider-electric.com/OrderEntryService
responseDoc.setProperty "SelectionNamespaces", "'http://schemas.xmlsoap.org/soap/envelope/' 'http://schneider-electric.com/OrderEntryService'"
Вам необходимо либо добавить его, либо добавить к нему префикс элементов, принадлежащих ему.