Tips - XML

【TOP】

DOM:子ノードの追加と削除
ある要素に子ノードを追加するには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 '------------------------------------------------------------------------ 'maroonを追加(appendChild) 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") '------------------------------------------------------------------------ 'whiteを削除(removeChild) Set node = docRoot.selectSingleNode("//color[@name='white']") docRoot.removeChild(node) DOM.save("data\color3.xml") '------------------------------------------------------------------------ 'maroonの前にsilverを追加(insertBefore) 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>
【戻る】