我正在使用VBA从XML父节点获取所有属性和值。

这是XML:

<Elements>
   <Details>
      <Name>ABC</Name>
      <Address>123ABC</Address>
   </Details>
   <Dept>
      <Deptname>IT</Deptname>
      <ID>A123</ID>
   </Dept>
</Elements>


这是我在VBA中使用的代码

sub test()
    Dim XMLFile As Object
    Dim XMLFileName As String
    Set XMLFile = CreateObject("Microsoft.XMLDOM")

    XMLFileName = "C:\Users\Input.xml"
    XMLFile.async = False
    XMLFile.Load (XMLFileName)
    XMLFile.validateOnParse = False

    Dim mainnode As Object
    Dim node As Object

    Set mainnode = XMLFile.SelectNodes("//Elements")

    For Each node In mainnode
        Dim child As Variant
        For Each child In node.ChildNodes
            Debug.Print child.Name
        Next child
    Next node
End sub


这是我期望的输出。

Details
Name
Address
Dept
deptname
ID


执行上述代码时出现错误。有人可以帮我解决这个问题。谢谢!

最佳答案

xml样本中,NameAddressDetails的子级。以下代码返回DetailsDept

For Each node In mainnode
    Dim child As Object
    For Each child In node.ChildNodes
        Debug.Print child.BaseName
    Next child
Next node

如果要使用DetailsDept的子级,则需要更深一层:
For Each node In mainnode
    Dim child As Object
    For Each child In node.ChildNodes
        Debug.Print child.BaseName
        Dim kiddo As Object
        For Each kiddo In child.ChildNodes
            Debug.Print kiddo.BaseName
        Next kiddo
    Next child
Next node

10-07 19:31
查看更多