Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】Dom\EntityReference::previousSiblingプロパティの使い方

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

作成日: 更新日:

基本的な使い方

『previousSiblingプロパティは、XMLやHTML文書をプログラムで扱うための木構造(DOMツリー)において、現在のエンティティ参照ノードの直前に位置する兄弟ノードを保持するプロパティです。兄弟ノードとは、同じ親ノードの配下にあり、同じ階層に並んでいるノード群を指します。このプロパティを使うことで、現在のノードからDOMツリーを後方へ辿り、一つ手前のノードにアクセスすることが可能になります。取得できるノードは要素ノードに限定されず、コメントノードやテキストノードなども対象となります。特に、要素間の改行や空白文字はテキストノードとして扱われることがあるため注意が必要です。もし直前に兄弟ノードが存在しない場合、つまり現在のノードが親ノードの最初の子である場合には、このプロパティの値はnullになります。このプロパティは読み取り専用であり、値を取得することのみが可能です。ノードの順序を変更するなどの操作はできません。

構文(syntax)

1<?php
2
3$xml = <<<XML
4<?xml version="1.0" encoding="utf-8"?>
5<!DOCTYPE root [
6    <!ENTITY myEntity "entity text">
7]>
8<root>
9    <element1/>
10    &myEntity;
11    <element2/>
12</root>
13XML;
14
15$dom = new \Dom\Document();
16$dom->preserveWhiteSpace = false;
17$dom->loadXML($xml);
18
19// <root> の子ノードリストを取得
20$childNodes = $dom->documentElement->childNodes;
21
22// &myEntity; ノード (Dom\EntityReference) を取得 (リストの2番目)
23$entityReferenceNode = $childNodes->item(1);
24
25// 直前の兄弟ノード (previousSibling) を取得
26$previousNode = $entityReferenceNode->previousSibling;
27
28// 取得したノード (<element1/>) のノード名を出力
29if ($previousNode) {
30    echo $previousNode->nodeName; // "element1"
31}
32
33?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

Dom\Node|null

このプロパティは、現在の要素の直前の兄弟要素を表す Dom\Node オブジェクト、または兄弟要素が存在しない場合は null を返します。

関連コンテンツ

関連プログラミング言語