-1

如何在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>

请给我一个方法。

4

1 回答 1

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
于 2013-06-18T15:32:56.473 回答