【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 を返します。