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

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

作成日: 更新日:

基本的な使い方

childNodesプロパティは、DOMツリーにおける現在のノードの直接の子ノードのリストを保持するプロパティです。このプロパティにアクセスすると、すべての子ノードを格納したDOMNodeListオブジェクトが返されます。しかし、Dom\Notationクラスのインスタンスにこのプロパティが適用される場合、その振る舞いは通常の要素ノードとは異なります。

Dom\Notationクラスは、XMLドキュメントのDTD(Document Type Definition)内で定義される「表記(NOTATION)」を表します。表記は、XML外部の非XMLデータを識別するために使用され、通常は画像ファイルや特定のアプリケーションで処理されるべきデータ型などを指定する際に利用されます。このDom\Notationノード自体は、他のXML要素やテキストノードのような子ノードを持つ構造ではありません。

したがって、Dom\NotationオブジェクトのchildNodesプロパティにアクセスしても、常に空のDOMNodeListオブジェクトが返されます。このプロパティを使って子ノードを走査しようとしても、何も得られないことを意味します。プログラミングを行う際には、各DOMノードのタイプが持つ特性と、それに伴うプロパティの具体的な動作を理解することが、適切な処理を実装する上で非常に重要です。特に、Dom\Notationのような特殊なノードでは、その特性を把握しておく必要があります。

構文(syntax)

1<?php
2$xml = <<<XML
3<!DOCTYPE root [
4  <!NOTATION gif SYSTEM "image/gif">
5  <!ELEMENT root EMPTY>
6]>
7<root/>
8XML;
9
10$dom = new DOMDocument();
11$dom->loadXML($xml);
12
13$notation = null;
14if ($dom->doctype && $dom->doctype->notations->length > 0) {
15    $notation = $dom->doctype->notations->item(0);
16}
17
18if ($notation) {
19    $childNodes = $notation->childNodes;
20}

引数(parameters)

引数なし

引数はありません

戻り値(return)

Dom\NodeList

Dom\NodeListオブジェクトを返します。これは、この要素のすべての子ノードを保持するリストです。

関連コンテンツ

関連プログラミング言語