Tips - XML

【TOP】

DOM:documentFragment
documentFragmentは文字通り、文書の断片という意味で、DOMの操作で一時的に使われるサブツリーのことです。
ノード集合をまとめて移動したい場合など、文書構造の変更に役に立ちます。
XML文書としてDOM:属性の取得と設定で使ったyearJE.xmlを考えてみます。
6月から12月までのlunar要素を新しいXML文書「fragment.xml」に出力します。
Option Explicit Dim DOM, docRoot, node, nodeList, docFragment, newElement, newNode Set DOM = WScript.CreateObject("Microsoft.XMLDOM") DOM.async = True DOM.load("data\yearJE.xml") Set docRoot = DOM.documentElement Set docFragment = DOM.createDocumentFragment() Set nodeList = docRoot.selectNodes("//month[@id > 5]/lunar") 'fragmentにノードを追加 For Each node In nodeList docFragment.appendChild(node) Next 'XML宣言を出力 Set newNode = DOM.createProcessingInstruction("xml","version=""1.0"" encoding=""utf-8""") Set DOM = WScript.CreateObject("Microsoft.XMLDOM") DOM.appendChild(newNode) 'root要素を出力 Set newElement = DOM.createElement("newRoot") DOM.appendChild(newElement) 'documentFragmentを追加 DOM.firstChild.nextSibling.appendChild(docFragment) 'DOM.firstChild.nextSibling→newRootノード DOM.save("data\fragment.xml") Set newElement = Nothing Set docFragment = Nothing Set nodeList = Nothing Set node = Nothing Set docRoot = Nothing Set DOM = Nothing
生成したfragment.xmlは次のようになります。
<?xml version="1.0" encoding="utf-8"?> <newRoot> <lunar>水無月</lunar> <lunar>文月</lunar> <lunar>葉月</lunar> <lunar>長月</lunar> <lunar>神無月</lunar> <lunar>霜月</lunar> <lunar>師走</lunar> </newRoot>
【戻る】