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

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

作成日: 更新日:

基本的な使い方

nextSiblingプロパティは、Dom\XMLDocumentクラスに属し、現在のノードの次に位置する兄弟ノードを保持するプロパティです。ここでいう「兄弟ノード」とは、同じ親要素を持つノードのうち、現在のノードの直後に続くノードを指します。

Dom\XMLDocumentクラスは、XMLドキュメント全体を表す特別なノードです。XMLドキュメントは通常、すべての要素の最上位に位置する単一のルート要素を持つため、ドキュメントノード自体が他のノードの兄弟として存在することは極めて稀です。そのため、Dom\XMLDocumentオブジェクトのnextSiblingプロパティにアクセスしても、ほとんどの場合、次に続く兄弟ノードが存在しないことを示すnullが返されます。

このプロパティは、DOM(Document Object Model)の設計において、すべてのノードが共通して持つ基本的な属性の一つとして提供されています。しかし、その主な用途は、XMLドキュメント内部の具体的な要素ノードやテキストノードなど、階層構造の中に存在するノードを操作する際に、隣接するノードへの効率的なアクセスを可能にすることにあります。

システムエンジニアとしてXMLドキュメントを扱う際には、このnextSiblingプロパティが、ノードリストを順に走査する際や、特定のノードに続く情報を取得する際に非常に役立つことを理解しておくことが重要です。Dom\XMLDocumentのインスタンスでは、通常nullを返す点に注意しつつ、より具体的な要素ノードなどで利用することを想定してください。

構文(syntax)

1<?php
2
3// Dom\Document クラスを使用してXMLドキュメントを作成します。
4// Dom\XMLDocument というクラスはPHP標準にはありませんが、Dom\Document がXML文書を扱います。
5$doc = new Dom\Document();
6$doc->loadXML('<root><item1/><item2/></root>');
7
8// ルート要素の子ノードである <item1> を取得します。
9// これは Dom\Element (Dom\Nodeを継承) のインスタンスです。
10$node = $doc->documentElement->firstChild;
11
12// ノードの次の兄弟ノードを取得します。
13// この場合、<item1> の次の兄弟ノードである <item2> が取得されます。
14$nextSiblingNode = $node->nextSibling;
15
16// 取得したノードが存在すれば、そのノード名を出力します。
17if ($nextSiblingNode !== null) {
18    echo $nextSiblingNode->nodeName; // 出力: item2
19}
20
21?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

?Dom\Node

指定されたXMLノードの次の兄弟ノードを返します。次の兄弟ノードが存在しない場合は、nullを返します。

関連コンテンツ

【PHP8.x】nextSiblingプロパティの使い方 | いっしー@Webエンジニア