Использование правильного пути с пространствами имен для анализа 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
Другие вопросы по тегам