【PHP8.x】adoptNodeメソッドの使い方
adoptNodeメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
adoptNodeメソッドは、他のドキュメントオブジェクトに属しているノードを、現在のドキュメントに移動させるために実行するメソッドです。この操作はノードの「養子縁組」とも呼ばれ、指定されたノードを元のドキュメントから完全に削除し、現在のドキュメントが所有するように変更します。これにより、異なる二つのドキュメント間でノードを安全に再配置することが可能になります。似た機能を持つimportNodeメソッドがノードのコピーを作成するのに対し、adoptNodeはノードそのものを移動させるという点が大きな違いです。したがって、元のドキュメントからノードを完全に取り除き、別のドキュメントに移したい場合に使用します。このメソッドで取り込んだノードは、現在のドキュメントに所有権が移りますが、ドキュメントツリー内の特定の位置に自動的に挿入されるわけではありません。そのため、取り込んだ後にはappendChildやinsertBeforeなどのメソッドを使用して、明示的にドキュメント内の適切な場所に追加する処理が必要です。処理が成功した場合は移動したノードオブジェクトを返し、失敗した場合はfalseを返します。
構文(syntax)
1<?php 2 3// 移動元のXMLドキュメントを作成 4$sourceDoc = new Dom\XMLDocument(); 5$sourceDoc->loadXML('<root><child>move me</child></root>'); 6 7// 移動先のXMLドキュメントを作成 8$destDoc = new Dom\XMLDocument(); 9$destDoc->loadXML('<newRoot/>'); 10 11// 移動するノードを取得 12$nodeToAdopt = $sourceDoc->getElementsByTagName('child')->item(0); 13 14// destDocがnodeToAdoptを自身のノードとして養子縁組する 15// 戻り値は、養子縁組されたノード 16$adoptedNode = $destDoc->adoptNode($nodeToAdopt); 17 18// 養子縁組に成功した場合、移動先のドキュメントに追加する 19if ($adoptedNode) { 20 $destDoc->documentElement->appendChild($adoptedNode); 21} 22 23?>
引数(parameters)
Dom\Node $node
- Dom\Node $node: 採用したいDOMノードオブジェクト
戻り値(return)
Dom\Node|false
Dom\XMLDocument::adoptNodeメソッドは、別のドキュメントからノードを現在のドキュメントに移動またはコピーして取り込むために使用します。成功した場合は、取り込まれたDom\Nodeオブジェクトを返します。失敗した場合は、falseを返します。