VBA 中的 SelectSingleNode 失败
SelectSingleNode failure in VBA
我正在尝试为 Excel 解析 VBA 中的 returned 数据服务文件,虽然我查看了类似问题的几个有用答案,none 他们似乎让 SelectSingleNode 对我来说 return 任何东西。
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 语句完整地输出了它,但是 none 的 XPath 查询我'我已经尝试 return 编辑任何东西。我在该主题上看到的其他问题表明上述查询是正确的;我是不是还漏掉了什么?
Quotes = oXMLDoc.SelectSingleNode("//a:feed")
应该是
Set Quotes = oXMLDoc.SelectSingleNode("//a:feed")
该错误消息具有误导性,因为它看起来像是在说找不到 xpath 目标,但如果发生这种情况,它不会引发错误,它只是 returns Nothing
我正在尝试为 Excel 解析 VBA 中的 returned 数据服务文件,虽然我查看了类似问题的几个有用答案,none 他们似乎让 SelectSingleNode 对我来说 return 任何东西。
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 语句完整地输出了它,但是 none 的 XPath 查询我'我已经尝试 return 编辑任何东西。我在该主题上看到的其他问题表明上述查询是正确的;我是不是还漏掉了什么?
Quotes = oXMLDoc.SelectSingleNode("//a:feed")
应该是
Set Quotes = oXMLDoc.SelectSingleNode("//a:feed")
该错误消息具有误导性,因为它看起来像是在说找不到 xpath 目标,但如果发生这种情况,它不会引发错误,它只是 returns Nothing