我下载了一个 xml 文件,其中有几个重复的主节点,如何使用 vb6 将这些节点分离到不同的 xml 文件中。
这是我正在使用的 xml 示例:
<produto>
<item>
<codigo>001</codigo>
<qtde>1</qtde>
</item>
</produto>
<produto>
<item>
<codigo>002</codigo>
<qtde>33</qtde>
</item>
</produto>
<produto>
<item>
<codigo>004</codigo>
<qtde>10</qtde>
</item>
</produto>
<produto>
<item>
<codigo>005</codigo>
<qtde>6</qtde>
</item>
</produto>
我尝试使用以下代码:
Dim xmldoc As New MSXML2.DOMDocument
Dim noList As MSXML2.IXMLDOMNodeList
Dim node As MSXML2.IXMLDOMNode
xmldoc.loadXML("C:\\test.xml")
Set noList = xmldoc.getElementsByTagName("produto")
For i = 0 To noList.length - 1
'
Set node = noList.Item(i)
xmldoc.loadXML node.nodeValue
strFile = "Arq_" & i & ".xml"
node.Save strFile
'
Next
但是线路出现错误:
Set noList = xmldoc.getElementsByTagName("produto")
正如已经提到的,这不是一个格式良好的 XML 文件,缺少根节点。您的 XML 当前有 4 个路由节点
produto
。
因此插入一个根节点,例如
<?xml version="1.0"?>
<root>
<produto>
<item>
<codigo>001</codigo>
<qtde>1</qtde>
</item>
</produto>
<produto>
<item>
<codigo>002</codigo>
<qtde>33</qtde>
</item>
</produto>
<produto>
<item>
<codigo>004</codigo>
<qtde>10</qtde>
</item>
</produto>
<produto>
<item>
<codigo>005</codigo>
<qtde>6</qtde>
</item>
</produto>
</root>
我个人也更喜欢
.selectNodes()
而不是.getElementsByTagName()
。它使用 XPath 表达式,让您可以更好地控制所选元素。不是在这个特定的例子中,而是在一般情况下。例如。对于上面的例子
Set noList = xmldoc.selectNodes("//root/produto")
您的代码存在许多问题。
xmldoc.Load
。node.xml
。xmldoc.save
。完成这些更改后,代码如下所示:
xmldoc.Load "C:\test.xml"
Set noList = xmldoc.getElementsByTagName("produto")
For i = 0 To noList.length - 1
Set node = noList.Item(i)
xmldoc.loadXML node.xml
strFile = "Arq_" & i & ".xml"
xmldoc.save strFile
Next