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")
For Each node In nodeList
docFragment.appendChild(node)
Next
Set newNode = DOM.createProcessingInstruction("xml","version=""1.0"" encoding=""utf-8""")
Set DOM = WScript.CreateObject("Microsoft.XMLDOM")
DOM.appendChild(newNode)
Set newElement = DOM.createElement("newRoot")
DOM.appendChild(newElement)
DOM.firstChild.nextSibling.appendChild(docFragment)
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>