【问题标题】:Using the correct path with namespaces for parsing XML (in VBA)使用带有命名空间的正确路径来解析 XML(在 VBA 中)
【发布时间】:2017-02-03 13:16:18
【问题描述】:

我正在努力思考使用 VBA 解析 XML 的命名空间和路径。这里我有一些非常简单的 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 中设置了命名空间(这是从另一个 stackoverflow 问题中找到的!)...

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 中提取 & 的数据的语法应该是什么? (即记住我的代码的命名空间声明)

非常感谢。

【问题讨论】:

    标签: xml vba namespaces ebay-api xml-documentation


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢...这是我需要的最后一点信息(脑雾)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    • 2015-03-06
    • 2012-06-09
    • 2010-09-12
    相关资源
    最近更新 更多