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

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

作成日: 更新日:

基本的な使い方

previousSiblingプロパティは、PHPのDOM拡張機能において、XML文書構造を扱う際に使用されるDOMNotationクラスに属するプロパティです。このプロパティは、現在のDOMNotationオブジェクトの直前にある「兄弟ノード」を保持します。

DOM(Document Object Model)は、HTMLやXML文書の構造をツリー状のモデルとして表現し、プログラムからその内容や構造にアクセスし、操作するための標準的なAPIです。このツリー構造において、「兄弟ノード」とは、同じ親要素を持つノード同士の関係を指します。

DOMNotationクラスは、XMLのDTD(Document Type Definition)で定義される表記宣言、例えば<!NOTATION ...>といった特定の外部形式の情報を表すノードです。

このpreviousSiblingプロパティにアクセスすることで、現在のDOMNotationノードのDOMツリー上での直前の兄弟ノードを取得することができます。取得される値はDOMNode型のオブジェクトとなり、これは要素ノード、テキストノード、コメントノードなど、あらゆる種類のDOMノードの可能性があります。もし、現在のノードの直前に兄弟ノードが存在しない場合、このプロパティはnullを返します。このプロパティは、XML文書の構造をプログラムで解析し、特定のノードの位置関係を調べたり、DOMツリーを順にたどって要素やデータを取得したりする際に非常に有用です。

構文(syntax)

1<?php
2// DTDを含むXML文字列を準備
3$xmlString = <<<XML
4<?xml version="1.0"?>
5<!DOCTYPE doc [
6  <!NOTATION notation1 PUBLIC "First Notation">
7  <!NOTATION notation2 PUBLIC "Second Notation">
8]>
9<doc/>
10XML;
11
12// DOMDocumentオブジェクトを作成してXMLを読み込む
13$dom = new DOMDocument();
14$dom->loadXML($xmlString);
15
16// DocumentTypeノードから2番目のNotationノードを取得
17$notation2 = $dom->doctype->notations->getNamedItem('notation2');
18
19// 2番目のNotationノードの直前の兄弟ノードを取得する
20$previousNode = $notation2->previousSibling;
21
22// 取得した兄弟ノードが存在すれば、その名前を出力
23if ($previousNode !== null) {
24    // 出力: notation1
25    echo $previousNode->nodeName;
26}
27?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

?DOMNode

DOMNotationクラスのpreviousSiblingプロパティは、現在のノードの直前の兄弟ノードをDOMNodeオブジェクトとして返します。直前の兄弟ノードが存在しない場合はnullを返します。

関連コンテンツ

関連プログラミング言語