2017-08-10 19 views
0

に2つ目のXMLを追加し、以下:私のようなXMLファイルを読んでいる2つのXMLファイルを読み込み、最初の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) 

私は得続けるが、なぜそれが

Error: Object doesn't support this property or method: 'xml1ChildNode.appendChild'

のですか?

答えて

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" 
0

カップルの更新

  • のselectNodesは、ノードのコレクションを返しますので、あなたはそれを反復処理する必要があります。ちょうど1つを得るために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 
関連する問題