Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在VBA Excel 2003中解析XML?_Xml_Excel_Vba - Fatal编程技术网

如何在VBA Excel 2003中解析XML?

如何在VBA Excel 2003中解析XML?,xml,excel,vba,Xml,Excel,Vba,我试图通过VBA解析一个通用XML文件。我想用它做什么:提取xml节点的值,将它们写入xml文件并导出 你知道有哪个库可以让我一次读取一个节点,让我用一个可理解的文档和一些示例(甚至是最简单的示例)来处理它吗 到目前为止: Sub Go() Dim xmlDoc As MSXML2.DOMDocument Dim xmlElement As MSXML2.IXMLDOMElement Dim xmlNode As MSXML2.IXMLDOMElement S

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

你知道有哪个库可以让我一次读取一个节点,让我用一个可理解的文档和一些示例(甚至是最简单的示例)来处理它吗

到目前为止:

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

按照您的评论中的规定解决更新后的问题:

在VBA中不能像这样用
Dim
语句中的参数来实例化对象。尝试:

Dim gReader As XmlTextReader
gReader = New XmlTextReader
另外,我建议您在此处阅读
XmlTextReader
文档:

这些示例演示了如何使用
XmlTextReader

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

您可能想考虑使用DOM而不是<代码> XmlTextReader < /代码>。我发现DOM相对容易使用。缺点是它对于非常大的XML文件效率低下。除非您正在处理大文件,否则DOM应该可以正常工作

Dim xlmDoc As Object
Set xlmDoc = CreateObject("Msxml2.DOMDocument.6.0")
xmlDoc.Load fileName

这可能会有帮助:向我们展示您的尝试,以便我们可以帮助您纠正它。否则,在您最喜欢的搜索引擎中键入“VBA DOM XML教程”。我已编辑了该问题。我现在很难理解为什么“Dim gReader作为新的XmlTextReader(文件名)”是一个错误。谢谢。我看你已经把你的问题改得很彻底了。如果你想得到帮助,你真的应该接受一个答案并开始一个新问题。所以。。首先谢谢你的帮助。但是我不能使用XmlTextReader。也许我是一个太傻的人,但这对我来说是行不通的。到目前为止,我已经更新了代码。。现在我有一个参考不匹配:(