首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在VBA Excel2003中解析XML?

如何在VBA Excel2003中解析XML?
EN

Stack Overflow用户
提问于 2011-05-16 01:29:57
回答 1查看 7.4K关注 0票数 2

我正在尝试通过VBA解析一个通用的XML文件。我想用它做什么:提取xml节点的值,将它们写入XML文件并导出它。

你知道有什么库可以让我一次读取一个节点,让我用一个容易理解的文档来处理,还有一些例子,甚至是最小的例子。

到目前为止:

代码语言:javascript
复制
Sub Go()

    Dim xmlDoc As MSXML2.DOMDocument
    Dim xmlElement As MSXML2.IXMLDOMElement
    Dim xmlNode As MSXML2.IXMLDOMElement

    Set xmlDoc = New MSXML2.DOMDocument
    xmlDoc.Load ("E:\cdCatalog.xml")

    Set xmlElement = xmlDoc.documentElement
    Set xmlNode = xmlElement.FirstChild

    parseNodes xmlElement, 1, 1
    'parseNodes xmlNode, 1, 1

End Sub

Sub parseNodes(node As MSXML2.IXMLDOMElement, i As Integer, j As Integer)
    Dim child As MSXML2.IXMLDOMNode

    'result = node.baseName & " : " & node.Text
    result = node.nodeName

    Sheet1.Activate
    ' text if...
    Cells(i, j) = result

    j = j + 1
    If (node.hasChildNodes) Then

        For Each child In node.childNodes
            i = i + 1
            'MsgBox child.Text
            MsgBox TypeName(node.childNodes)
            parseNodes child, i, j
        Next
    End If

End Sub
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-16 08:33:16

回答您在评论中指定的更新问题:

你不能像那样在Dim语句中使用参数来实例化对象。尝试:

代码语言:javascript
复制
Dim gReader As XmlTextReader
gReader = New XmlTextReader

另外,我建议您阅读这里的XmlTextReader文档:

http://msdn.microsoft.com/en-us/library/1af7xa52.aspx

下面的示例说明了如何使用XmlTextReader

编辑:据我粗略的互联网搜索所知,XmlTextReader是为.NET实现的,但不是为VBA实现的。

您可能希望考虑使用DOM而不是XmlTextReader。我发现DOM相对容易使用。缺点是它对于非常大的XML文件是低效的。除非您正在处理大文件,否则DOM应该可以很好地为您工作。

代码语言:javascript
复制
Dim xlmDoc As Object
Set xlmDoc = CreateObject("Msxml2.DOMDocument.6.0")
xmlDoc.Load fileName
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6010031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档