Использование правильного пути с пространствами имен для анализа XML (в VBA)
Я изо всех сил пытаюсь обернуть голову вокруг пространств имен и путей без разбора XML с использованием VBA. Здесь у меня есть очень простой XML...
<?xml version="1.0"?>
<GetOrdersResponse
xmlns="urn:ebay:apis:eBLBaseComponents">
<Timestamp>2016-09-26T08:49:18.274Z</Timestamp>
Ack
<Version>983</Version>
<Build>E983_INTL_APIXO_18098703_R1</Build>
<OrderArray>
<Order>
<OrderID>252363798635-1903344147015</OrderID>
<OrderStatus>Completed</OrderStatus>
</Order>
<Order>
<OrderID>261505550993-1887803672016</OrderID>
<OrderStatus>Completed</OrderStatus>
</Order>
</OrderArray>
</GetOrdersResponse>
Я настроил пространство имен в VBA следующим образом (это было найдено из другого вопроса stackru!)...
Dim xmlNamespaces As String
xmlNamespaces = "xmlns:doc='urn:ebay:apis:eBLBaseComponents'"
objxmldoc.SetProperty "SelectionNamespaces", xmlNamespaces
objxmldoc.SetProperty "SelectionLanguage", "XPath"
У меня вопрос, как мне ссылаться на фактические поля данных XML, которые мне нужны?
Вот команда, которую я обычно использую...
Set Ordercount = objxmldoc.selectNodes("//OrderID")
Debug.Print "Total Number of Orders : " & Ordercount.length
но он возвращает счетчик 0, так что мой ссылочный путь неверен - это синтаксис ("//OrderID"), в котором я не уверен. Так какой же должен быть синтаксис для извлечения данных для & в XML, вставленном выше? (т.е. имея в виду объявления пространства имен моего кода)
Большое спасибо.
1 ответ
Вы достаточно близко! Если вы хотите получить количество элементов:OrderID, вы можете просто использовать свойство Count. Как это:
Ordercount = objxmldoc.selectNodes("//OrderID").Count
Debug.Print "Total Number of Orders : " & Ordercount