我正在使用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样本中,Name
和Address
是Details
的子级。以下代码返回Details
和Dept
:
For Each node In mainnode
Dim child As Object
For Each child In node.ChildNodes
Debug.Print child.BaseName
Next child
Next node
如果要使用
Details
和Dept
的子级,则需要更深一层: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