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

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

作成日: 更新日:

基本的な使い方

cloneNodeメソッドは、DOMCdataSectionクラスに属し、XMLドキュメント内でCDATAセクションを表すノードを複製するために使用されるメソッドです。DOMCdataSectionは、XMLパーサによってマークアップとして解釈されたくない生データ、例えばHTMLタグや特殊文字などを含むテキストデータを格納するための特別なセクションを扱うクラスです。このメソッドを利用することで、既存のCDATAセクションノードの内容や属性を保持したまま、新しい独立したCDATAセクションノードを作成することができます。

メソッドの引数として$deep(真偽値)を指定できます。この引数は、通常、ノードが子ノードを持つ場合に、子ノードも再帰的に複製するかどうかを決定します。しかし、DOMCdataSectionはテキストデータを保持するノードであり、自身の子ノードを持つことはありません。そのため、$deeptrueを設定してもfalseを設定しても、このメソッドはノード自身のコンテンツ(CDATAセクション内のテキストデータ)を含む形でノード全体を複製します。

複製された新しいノードは、元のドキュメントツリーには自動的に追加されません。複製されたノードを実際にドキュメントツリーのどこかに組み込むには、appendChild()などのDOM操作メソッドを別途使用する必要があります。この機能は、同じ内容のCDATAセクションをドキュメント内の複数の箇所に配置したい場合や、既存のCDATAセクションをテンプレートとして利用し、その内容を元に新しいノードを作成したい場合に非常に役立ちます。これにより、DOMツリーの構築や操作が効率的に行えます。

構文(syntax)

1<?php
2$dom = new DOMDocument();
3$cdataSection = $dom->createCDATASection('example content');
4$clonedCdataSection = $cdataSection->cloneNode(true);
5?>

引数(parameters)

?bool $deep = false

  • bool $deep = false: trueを指定すると、ノードとそのすべての属性および子ノードのディープコピーが作成されます。falseの場合、ノードのみのコピーが作成されます。

戻り値(return)

DOMNode

DOMCdataSection::cloneNodeは、現在のCdataSectionノードのディープコピー(子ノードも含めて全て複製したもの)をDOMNodeオブジェクトとして返します。

関連コンテンツ

関連プログラミング言語