我正在尝试通过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发布于 2011-05-16 08:33:16
回答您在评论中指定的更新问题:
你不能像那样在Dim语句中使用参数来实例化对象。尝试:
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应该可以很好地为您工作。
Dim xlmDoc As Object
Set xlmDoc = CreateObject("Msxml2.DOMDocument.6.0")
xmlDoc.Load fileNamehttps://stackoverflow.com/questions/6010031
复制相似问题