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

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

作成日: 更新日:

基本的な使い方

importNodeメソッドは、PHPのDOM拡張機能において、あるDOMドキュメントに属するノードを、別のDom\Documentインスタンスにコピーして利用できるように実行するメソッドです。このメソッドは、主に異なるHTMLやXMLドキュメント間で要素、属性、テキストなどのノードを移動または複製する際に利用されます。

具体的には、引数として指定されたノードを、このメソッドが呼び出されたDom\Documentオブジェクトの所有物として再作成します。インポートされたノードは、現在のドキュメントのコンテキストで操作可能になりますが、ドキュメントツリーには自動的に追加されません。そのため、インポート後にはappendChildinsertBeforeなどのメソッドを用いて、インポートしたノードをドキュメント内の適切な位置に手動で挿入する必要があります。

このメソッドの重要な機能として、ノードとその子孫ノードをすべてインポートするかどうかを制御する $deep 引数があります。trueを指定すると、元のノードとそのサブツリー(子孫ノード全て)が深くコピーされます。一方、falseを指定すると、ノード自体のみがコピーされ、子孫ノードは含まれません。この柔軟性により、必要に応じてノードの一部または全体を効果的に扱えます。

構文(syntax)

1<?php
2
3$targetDocument = new Dom\Document(); // ノードをインポートする Dom\Document インスタンス
4$nodeToImport = new Dom\Element('sample'); // インポートしたい Dom\Node インスタンス
5$deepCopy = true; // 子ノードも再帰的にインポートする場合は true、しない場合は false
6
7$importedNode = $targetDocument->importNode($nodeToImport, $deepCopy);
8
9?>

引数(parameters)

Dom\Node $node, bool $deep = false

  • Dom\Node $node: インポートするDOMノードを指定します。
  • bool $deep = false: trueを指定すると、指定したノードの子孫ノードもすべて再帰的にインポートします。デフォルトはfalseで、指定したノードのみをインポートします。

戻り値(return)

Dom\Node

指定されたXMLノードを現在のDOMドキュメントにインポートしたDom\Nodeオブジェクトを返します。