Я использую следующий код, чтобы получить значение элемента «DistanceUnit» в моем XML:VBA Excel SelectSingleNode синтаксис
Dim xmlDoc As MSXML2.DOMDocument60
Dim xmlElement As MSXML2.IXMLDOMElement
Set xmlDoc = New MSXML2.DOMDocument60
xmlDoc.async = False
xmlDoc.validateOnParse = False
xmlDoc.LoadXML strResponse
Set xmlElement = xmlDoc.DocumentElement
Set curNode = xmlElement.SelectSingleNode("/Response/ResourceSets/ResourceSet/Resources/Route/DistanceUnit")
При отладке я вижу, что curNode НИЧЕГО. Я не понимаю, почему. Когда я использую itterative код, кажется, работает нормально:
Set xmlRoot = xmlDoc.DocumentElement
Set xmlChildren = xmlRoot.ChildNodes
For Each xmlTemplate In xmlChildren
If xmlTemplate.nodeName = "ResourceSets" Then
MsgBox "found!"
Exit For
End If
Next xmlTemplate
Я не хочу использовать itterative код, так как я знаю точный XPath к элементу ...
Этот код работать как хорошо, но я просто хочу, чтобы использовать XPath:
Set curNode = xmlRoot.ChildNodes(6).ChildNodes(0).ChildNodes(1).ChildNodes(0).ChildNodes(2)
MsgBox curNode.Text
Спасибо, Ли
Мой XML:
<Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/search/local/ws/rest/v1">
....
<StatusCode>200</StatusCode>
<StatusDescription>OK</StatusDescription>
<AuthenticationResultCode>ValidCredentials</AuthenticationResultCode>
<ResourceSets>
<ResourceSet>
<EstimatedTotal>1</EstimatedTotal>
<Resources>
<Route>
.....
<DistanceUnit>Kilometer</DistanceUnit>
.....
</Route>
</Resources>
</ResourceSet>
</ResourceSets>
</Response>
Спасибо :), наконец, это работает :) – user429400