2008年1月7日(月曜日)
DocumentFragment の CloneNode()
DocumentFragment の CloneNode(true) でハマったのでメモ。DOM1 の仕様 (www.w3.org)を見ると、DocumentFragment には以下のような性質があります。
When a DocumentFragment is inserted into a Document (or indeed any other Node that may take children) the children of the DocumentFragment and not the DocumentFragment itself are inserted into the Node.
以上、Document Object Model (Core) Level 1 : Interface DocumentFragment より
DocumentFragment をドキュメントに挿入すると、DocumentFragment の子ノードだけが挿入され、DocumentFragment 自身は挿入されずに独り(?)残されるという仕様になっています。AppendChild すると DocumentFragment は空っぽになってしまうので、その後で CloneNode(true) しても、空の DocumentFragment しか得られません。
たいていのノードは AppendChild した後でも CloneNode(true) でコピーが得られるのですが、DocumentFragment だけは AppendChild する前にコピーしておかないと駄目ということです。
※あるメソッドが XmlElement ではなく XmlDocumentFragment を返すように修整したら動かなくなってしまい、結構はまりました……。
- 「DocumentFragment の CloneNode()」にコメントを書く
- 前(古い): 2008年1月5日(Saturday)のえび日記
- 次(新しい): 2008年1月8日(Tuesday)のえび日記