Я пытаюсь проанализировать возвращенный файл службы данных в VBA для Excel, и хотя я просмотрел несколько полезных ответов на похожие вопросы, ни один из них, похоже, не получил SelectSingleNode, который мне что-либо возвращал.
Файл XML довольно большой, но узлы-обертки, таким образом:
<?xml version="1.0" encoding="utf-8"?>
<feed xml:base="https://___.bpmonline.com/0/ServiceModel/EntityDataService.svc/" xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<title type="text">labQuoteCollection</title>
...
</feed>
Мой соответствующий код VBA находится здесь (я знаю, что некоторые из этих свойств избыточны, просто пытаюсь быть уверенным):
Dim NS As String
NS = "xmlns:a=""http://www.w3.org/2005/Atom"" xmlns:d=""http://schemas.microsoft.com/ado/2007/08/dataservices"" xmlns:m=""http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"""
Dim QuoteData As String
Dim oXMLReq As New WinHttp.WinHttpRequest
Dim oXMLDoc As New MSXML2.DOMDocument60
With oXMLHTTP
.Open "GET", DataURL, False
.setRequestHeader "Cookie", AuthCookie
.send
QuoteData = .responseXML.XML
oXMLDoc.LoadXML QuoteData
oXMLDoc.setProperty "SelectionLanguage", "XPath"
oXMLDoc.setProperty "SelectionNamespaces", NS
oXMLDoc.resolveExternals = True
Debug.Print (oXMLDoc.parseError.ErrorCode)
Debug.Print oXMLDoc.XML
Dim Quotes As IXMLDOMNode
Quotes = oXMLDoc.SelectSingleNode("//a:feed")
If Quotes Is Nothing Then
Debug.Print "fail"
End If
End With
Я вижу, что XML загружается в oXMLDoc без ошибок, и оператор Print выводит его полностью, но ни один из запросов XPath, которые я пытался, ничего не возвращал. Другие вопросы, которые я видел по этой теме, предполагают, что приведенный выше запрос является правильным; возможно я что-то упускаю?