读取两个XML文件,并将第二个XML附加到第一个XML节点

时间:2017-08-10 20:08:50

标签: xml vbscript

我正在阅读如下的XML文件:

Set xml1 = CreateObject("Msxml2.DOMDocument")
Set xml2 = CreateObject("Msxml2.DOMDocument")
xml2.Async = "False"
xml1.Async = "False"

xml1.Load("file1.xml")
xml2.Load("file2.xml")

Set xml1ChildNode = xml1.selectNodes("/node")

xml1ChildNode.AppendChild(xml2)

虽然我一直在接受:

  

错误:Object不支持此属性或方法:'xml1ChildNode.appendChild'

为什么?

2 个答案:

答案 0 :(得分:1)

  • 获取要从文件1追加的节点列表。

  • 从文件2中获取要添加到的节点。

  • 循环从文件1获取的节点列表并追加。

查看评论以获取详细信息。

Set xml1 = CreateObject("Msxml2.DOMDocument")
Set xml2 = CreateObject("Msxml2.DOMDocument")

xml1.Async = "False"
xml2.Async = "False"

xml1.load("C:\\Users\\XXXXX\\Desktop\\test\\file1.xml")
xml2.load("C:\\Users\\XXXXX\\Desktop\\test\\file2.xml")

'GET THE NODES TO APPEND FROM XML 1 ex:book
Set objNodeList = xml1.getElementsByTagName("book")

'GET THE NODES TO WHICH YOU WANT TO APPEND IN XML 2 ex:catalog
Set ObjectRecord = xml2.getElementsByTagName("catalog")

'LOOP THE NODES AND APPEND
For Each objNode in objNodeList
   'APPEND TO WHATEVER ELEMENT YOU WANT in xml 2 ex: first catalog element in XML 2
   ObjectRecord(0).appendChild objNode
Next

'CHECK YOUR OUTPUT
xml2.Save "C:\\Users\\XXXXX\\Desktop\\test\\file3.xml"

答案 1 :(得分:0)

一对夫妇更新

  • selectNodes返回一组节点,因此您必须遍历它。使用selectSingleNode只能获得一个。

  • appendChild从父级(xml2.DocumentElement或类似名称)开始,以及要添加到其中的内容。

  • 这实际上将节点从一个文档移动到另一个文档。使用 如果您不想这样做,请在您的appendChild中使用cloneNode。

这是更新后的代码

Set xml1 = CreateObject("Msxml2.DOMDocument")
Set xml2 = CreateObject("Msxml2.DOMDocument")
xml2.Async = "False"
xml1.Async = "False"

xml1.Load("file1.xml")
xml2.Load("file2.xml")

For Each ndNode In xml1.selectNodes( "//node" )
    xml2.DocumentElement.appendChild( ndNode )
Next

WScript.Echo xml2.xml