【PHP8.x】childNodesプロパティの使い方

childNodesプロパティの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

childNodesプロパティは、DOMTextクラスに属し、ノードの子ノードのリストを保持するプロパティです。

PHPのDOM拡張機能において、DOMTextクラスは、HTMLやXMLドキュメント内でテキストデータそのものを表すノードです。例えば、<p>これはテキストです</p>というHTML要素がある場合、「これはテキストです」という部分がDOMTextノードとして扱われます。

一般的に、DOMツリー内のノードは、その下位にさらに他のノード(子ノード)を持つことがあります。これらの子ノードの集合は、childNodesプロパティを通じてDOMNodeListという形式で取得されます。DOMNodeListは、リストのように子ノードをまとめて扱い、個々のノードにアクセスするためのオブジェクトです。

しかし、DOMTextノードは「テキスト内容」そのものを表現するノードであり、他の要素ノードのように、さらにその内部に子ノードを持つことはできません。テキストノードはDOMツリーにおける最終的なデータ部分であり、それ以上細分化される構造ではないためです。

したがって、DOMTextオブジェクトからこのchildNodesプロパティにアクセスすると、常に子ノードが一つも含まれていない空のDOMNodeListオブジェクトが返されます。この挙動は、DOMTextノードが子ノードを持たないというDOMの構造的な特性を反映したものです。テキストノードの内容自体を取得したい場合は、nodeValueプロパティなどを使用するのが適切です。

構文(syntax)

1<?php
2$dom = new DOMDocument();
3$element = $dom->createElement('p', 'これはテキストノードです。');
4$dom->appendChild($element);
5
6// DOMElementの子ノードであるDOMTextノードを取得
7$textNode = $element->firstChild; // $textNode は DOMText のインスタンス
8
9// DOMTextノードのchildNodesプロパティにアクセス
10$childrenOfTextNode = $textNode->childNodes;
11
12// DOMTextノードは子ノードを持たないため、childNodesは常に空のDOMNodeListを返します
13// そのため、$childrenOfTextNode->length は常に 0 となります
14echo "DOMTextノードの子ノードの数: " . $childrenOfTextNode->length . "\n";
15?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

DOMNodeList

DOMTextオブジェクトの直下の子ノードのリストをDOMNodeListクラスのインスタンスとして返します。

関連コンテンツ

関連プログラミング言語