2016-09-26 91 views
0

我正在努力围绕命名空间打包我的头&使用VBA解析XML的路径。在这里,我有一些非常简单的XML ...使用正确的名称空间路径解析XML(在VBA中)

<?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这样的(这是从另一个计算器问题找到了!)的命名空间了......

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,所以显然我的参考路径是错误的 - 它的语法(“//订单ID”),我是不确定。那么在上面粘贴的XML中插入&的数据的语法应该是什么? (即记住我的代码的名称空间声明)

非常感谢。

回答

0

你已经够接近了!如果你想获得元素数量:OrderID,你可以简单地使用Count属性。像这样:

Ordercount = objxmldoc.selectNodes("//OrderID").Count 
Debug.Print "Total Number of Orders : " & Ordercount 
+0

非常感谢......这是我需要的最后一点信息(脑雾) – peskywinnets