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

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

作成日: 更新日:

基本的な使い方

adoptNodeメソッドは、指定されたノードを現在のDom\Documentオブジェクトに「養子として迎え入れる」ことを実行するメソッドです。これは、あるDOMドキュメントに属するノードを、このメソッドを呼び出す別のDom\Documentインスタンスへと所有権を完全に移動させる際に使用されます。具体的には、引数で渡されたノードが元のドキュメントツリーから切り離され、呼び出し元のドキュメントがその新しい所有者となります。

このメソッドの主な目的は、異なるドキュメント間でノードを移動させることです。例えば、複数のXMLファイルやHTML断片を一つのドキュメントに統合する際に、ノードをコピーするのではなく、元の位置から完全に移動させたい場合に非常に有用です。ノードの移動後は、新しいドキュメントのどこにそのノードを配置するかを、appendChildなどの別のメソッドを使って明示的に指定する必要があります。

注意点として、ノードを養子に迎える行為は、元のドキュメントからそのノードを削除することを意味します。また、このメソッドは要素ノードやテキストノードなど、様々な種類のノードに対応していますが、属性ノード(DOMAttr)を直接採用することはできません。ただし、属性を持つ要素ノードを採用した場合、その属性も自動的に新しいドキュメントに移動します。名前空間の情報も適切に保持されるため、異なる名前空間を持つドキュメント間でも安全にノードを扱えます。

構文(syntax)

1<?php
2$targetDocument = new DOMDocument();
3$sourceDocument = new DOMDocument();
4$nodeToAdopt = $sourceDocument->createElement('exampleNode');
5
6// 別のドキュメント($sourceDocument)からノード($nodeToAdopt)を現在のドキュメント($targetDocument)に採用する
7$adoptedNode = $targetDocument->adoptNode($nodeToAdopt);
8?>

引数(parameters)

Dom\Node $node

  • Dom\Node $node: 新しく作成されたノードを、このドキュメントに採用(アタッチ)するために指定します

戻り値(return)

Dom\Node

指定されたDom\Documentインスタンスのコンテキストで、他のDom\Documentから移植されたDom\Nodeオブジェクトを返します。