【PHP8.x】adoptNodeメソッドの使い方

adoptNodeメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

adoptNodeメソッドは、他のドキュメントオブジェクトに属しているノードを、現在のドキュメントに移動させるために実行するメソッドです。この操作はノードの「養子縁組」とも呼ばれ、指定されたノードを元のドキュメントから完全に削除し、現在のドキュメントが所有するように変更します。これにより、異なる二つのドキュメント間でノードを安全に再配置することが可能になります。似た機能を持つimportNodeメソッドがノードのコピーを作成するのに対し、adoptNodeはノードそのものを移動させるという点が大きな違いです。したがって、元のドキュメントからノードを完全に取り除き、別のドキュメントに移したい場合に使用します。このメソッドで取り込んだノードは、現在のドキュメントに所有権が移りますが、ドキュメントツリー内の特定の位置に自動的に挿入されるわけではありません。そのため、取り込んだ後にはappendChildinsertBeforeなどのメソッドを使用して、明示的にドキュメント内の適切な場所に追加する処理が必要です。処理が成功した場合は移動したノードオブジェクトを返し、失敗した場合は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を返します。

【PHP8.x】adoptNodeメソッドの使い方 | いっしー@Webエンジニア