首页 > 解决方案 > 需要使用 Excel vba 合并两个 xml 文件

问题描述

我需要在 Excel VBA 中合并两个 XML 文件。第二个 XML 文件应作为第一个 XML 的同级添加。还必须Union在合并 XML 文件后创建一个。例如:

第一个 XML 文件:

<TupleList>
    <Member FullPath="Latest : FOLDER Day Ending 06-16-2019"/>
</TupleList>

第二个 XML 文件:

 <TupleList>
   <Member FullPath="Latest : FOLDER Day Ending 06-17-2019"/>
 </TupleList>

预期的输出 XML 文件:

 <Union>
  <TupleList>
    <Member FullPath="Latest : FOLDER Day Ending 06-16-2019"/>
  </TupleList>
  <TupleList>
   <Member FullPath="Latest : FOLDER Day Ending 06-17-2019"/>
  </TupleList>
 </Union>

我尝试了下面的代码,但它没有按预期工作

  Set XOuter = CreateObject("MSXML2.DOMDocument")
  Set XOuter1 = CreateObject("MSXML2.DOMDocument")
  Dim appendNode As MSXML2.IXMLDOMNode
  XOuter.Load ("C:\\blp\\1stXML.xml")
  XOuter1.Load ("C:\\blp\\2ndXML.xml")
  For Each appendNode In XOuter1.DocumentElement.ChildNodes
     XOuter.DocumentElement.appendChild appendNode
  Next

它以 Tuplelist 作为父级和 2 个成员作为子级提供输出。但我想要以高于预期的格式输出。

标签: excelxmlvbaxpath

解决方案


这对我有用:

Dim inDoc As New MSXML2.DOMDocument60
Dim resultDoc As New MSXML2.DOMDocument60
Dim rt As Object, nd

Set rt = resultDoc.appendChild(resultDoc.createElement("Union"))

Debug.Print resultDoc.XML

''using loadXML here for convenience...
inDoc.LoadXML ("<TupleList><Member FullPath=""Latest : FOLDER Day Ending 06-16-2019""/></TupleList>")
Set nd = resultDoc.importNode(inDoc.DocumentElement, True)
rt.appendChild nd

inDoc.LoadXML ("<TupleList><Member FullPath=""Latest : FOLDER Day Ending 06-17-2019""/></TupleList>")
Set nd = resultDoc.importNode(inDoc.DocumentElement, True)
rt.appendChild nd

Debug.Print resultDoc.XML

推荐阅读