ある要素に子ノードを追加するにはappendChildメソッドを使います。
反対に削除する場合はremoveChildメソッドを使います。
また、子ノードを置き換えるreplaceChildというメソッドや、指定したノードの直前にノードを挿入するinsertBeforeメソッドもあります。
今回のスクリプトではappendChild、removeChild、insertBeforeメソッドを使っています。
次のようなXML文書を考えてみます。
<!-- color.xml -->
<?xml version="1.0" encoding="utf-8"?>
<colors>
<color name="white">#FFFFFF</color>
<color name="pink">#FFC0CB</color>
</colors>
スクリプトを以下に示します。
Option Explicit
Dim DOM, docRoot, node, newElement, newNode
Set DOM = WScript.CreateObject("Microsoft.XMLDOM")
DOM.async = True
DOM.load("data\color.xml")
Set docRoot = DOM.documentElement
Set newElement = DOM.createElement("color")
Call newElement.setAttribute("name", "maroon")
Set newNode = DOM.createTextNode("#800000")
newElement.appendChild(newNode)
docRoot.appendChild(newElement)
DOM.save("data\color2.xml")
Set node = docRoot.selectSingleNode("//color[@name='white']")
docRoot.removeChild(node)
DOM.save("data\color3.xml")
Set newElement = DOM.createElement("color")
Call newElement.setAttribute("name", "silver")
newElement.text = "#C0C0C0"
Set node = docRoot.selectSingleNode("//color[@name='maroon']")
Call docRoot.insertBefore(newElement, node)
DOM.save("data\color4.xml")
Set newElement = Nothing
Set node = Nothing
Set docRoot = Nothing
Set DOM = Nothing
スクリプトの途中で保存したcolor2.xml、color3.xml、color4.xmlは次のようになります。
(ファイル名を記述したコメントは後からつけたものです。)
蛇足ですが、createCommentメソッドでコメントノードも作成できます。また、createNodeメソッドは
より汎用的で全ての種類のノードを作成することが出来ます。
<!-- color2.xml -->
<?xml version="1.0" encoding="utf-8"?>
<colors>
<color name="white">#FFFFFF</color>
<color name="pink">#FFC0CB</color>
<color name="maroon">#800000</color>
</colors>
<!-- color3.xml -->
<?xml version="1.0" encoding="utf-8"?>
<colors>
<color name="pink">#FFC0CB</color>
<color name="maroon">#800000</color>
</colors>
<!-- color4.xml -->
<?xml version="1.0" encoding="utf-8"?>
<colors>
<color name="pink">#FFC0CB</color>
<color name="silver">#C0C0C0</color>
<color name="maroon">#800000</color>
</colors>