如何从vba中的xml以下获取所有属性名称,我试图动态收集属性名称而不是excel中的硬编码,属性名称可能会增加或减少。
<Doc a="1" b="2">
<Doc1 aa="1" bb="2" cc="3" dd="4"/>
<Doc1 aa="1" bb="2" cc="3" dd="4" ee="5"/>
<Doc1 aa="1" bb="2" cc="3" dd="4"/>
<Doc1 aa="1" bb="2" cc="3" dd="4" ff="6"/>
<Doc1 aa="1" bb="2" cc="3" dd="4" gg="7"/>
</Doc>
请建议我。
答案 0 :(得分:0)
XML始终是一个挑战....您的阅读代码高度依赖于编写代码,并希望它永远不会改变。你的消息来源是陌生人之一。
我总是不得不在网上搜索以找到这些问题的解决方案,通常这些帖子与我手边的XML工具版本不一致。通常,您可以使用IDE查看对象库,并找到与帖子中找到的属性和方法相对应的属性和方法。在Excel中,F2会显示对象浏览器,您可以查看MSXML2库。
Sub test()
' add reference to MSXML v6
'http://msdn.microsoft.com/en-us/library/aa468547.aspx
'http://msdn.microsoft.com/en-US/data/bb190600.aspx
Dim xdoc As New DOMDocument60
Dim s As String
s = s & "<Doc a=""1"" b=""2"">"
s = s & "<Doc1 aa=""1"" bb=""2"" cc=""3"" dd=""4""/>"
s = s & "<Doc1 aa=""1"" bb=""2"" cc=""3"" dd=""4"" ee=""5""/>"
s = s & "<Doc1 aa=""1"" bb=""2"" cc=""3"" dd=""4""/>"
s = s & "<Doc1 aa=""1"" bb=""2"" cc=""3"" dd=""4"" ff=""6""/>"
s = s & "<Doc1 aa=""1"" bb=""2"" cc=""3"" dd=""4"" gg=""7""/>"
s = s & "</Doc>"
xdoc.LoadXML (s)
DisplayNodes2 xdoc
End Sub
Sub DisplayNodes2(xmlDoc As DOMDocument60)
'http://social.msdn.microsoft.com/Forums/en-US/xmlandnetfx/thread/454fbc72-ab87-4479-b0bf-b7925834ac4e/
Dim xelem As IXMLDOMElement
Dim xa As IXMLDOMAttribute
For Each xelem In xmlDoc.SelectNodes("//*")
Debug.Print xelem.nodeName
For Each xa In xelem.Attributes
Debug.Print xa.Name, xa.Value
Next xa
Next xelem
End Sub