【PHP8.x】parentNodeプロパティの使い方
parentNodeプロパティの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
parentNodeプロパティは、DOMツリー内における現在の要素の直接の親ノードを保持するプロパティです。HTMLやXML文書は、要素が入れ子になる階層構造で構成されています。このプロパティは、ある要素がどの要素の内部に配置されているか、つまり親子関係を遡って確認するために使用されます。例えば、<div>要素内に<p>要素がある場合、その<p>要素オブジェクトのparentNodeプロパティを参照すると、親である<div>要素オブジェクトを取得することができます。取得できる親ノードは、必ずしもDOMElementであるとは限らず、文書全体を表すDOMDocumentオブジェクトである場合もあります。もし要素に親ノードが存在しない場合、例えば、まだ文書に追加されていない新規作成された要素や、ツリー構造の最上位に位置するノードの場合、このプロパティはnullを返します。このため、parentNodeプロパティを利用する際は、返り値がnullでないことを確認する処理が必要になることがあります。なお、このプロパティは読み取り専用であり、親子関係を変更する際にはappendChildメソッドなどを用いてノードを操作する必要があります。
構文(syntax)
1<?php 2 3$html = "<div><p>This is a paragraph.</p></div>"; 4 5$doc = new DOMDocument(); 6$doc->loadHTML($html); 7 8// <p>要素を取得します 9$element = $doc->getElementsByTagName('p')->item(0); 10 11// parentNodeプロパティを使用して親ノードを取得します 12$parentNode = $element->parentNode; 13 14// 親ノードのタグ名を出力します 15// 出力: div 16echo $parentNode->nodeName; 17 18?>
引数(parameters)
引数なし
引数はありません
戻り値(return)
DOMNode|null
このプロパティは、この要素が属している親ノードを表すDOMNodeオブジェクト、または親ノードが存在しない場合はnullを返します。
サンプルコード
PHP DOM の parentNode を取得する
1<?php 2 3// DOMDocumentを生成 4$dom = new DOMDocument(); 5 6// HTMLをロード 7$dom->loadHTML('<html><body><div><p>Hello, World!</p></div></body></html>'); 8 9// p要素を取得 10$p = $dom->getElementsByTagName('p')->item(0); 11 12// p要素の親ノードを取得 13$parentNode = $p->parentNode; 14 15// 親ノードが存在する場合 16if ($parentNode !== null) { 17 // 親ノードの名前を出力 18 echo $parentNode->nodeName . PHP_EOL; // 出力: div 19} else { 20 echo "親ノードは存在しません" . PHP_EOL; 21} 22?>
PHPのDom\ElementクラスにおけるparentNodeプロパティは、指定された要素の親ノードを取得するために使用します。このプロパティは引数を持ちません。戻り値は、親ノードが存在する場合はDOMNodeオブジェクト、存在しない場合はnullを返します。
サンプルコードでは、まずDOMDocumentオブジェクトを作成し、HTMLドキュメントをロードしています。次に、getElementsByTagName('p')メソッドを使って、HTMLドキュメント内の最初の<p>要素を取得しています。
取得した<p>要素に対してparentNodeプロパティを使用し、親ノードを変数$parentNodeに格納します。その後、$parentNodeがnullでないか(親ノードが存在するか)を確認しています。
親ノードが存在する場合、nodeNameプロパティを使用して親ノードの名前(この場合はdiv)を出力します。親ノードが存在しない場合は、「親ノードは存在しません」というメッセージを出力します。
parentNodeプロパティは、DOMツリーを辿って要素間の関係性を把握する際に役立ちます。例えば、特定の要素の上位要素を検索したり、DOM構造を解析したりする際に利用できます。
Dom\Element クラスの parentNode プロパティは、要素の親ノードを返します。もし親ノードが存在しない場合(例えば、ドキュメントのルート要素の場合)、null を返すことに注意が必要です。サンプルコードでは、if ($parentNode !== null) で null チェックを行っていますが、このチェックを怠ると、null に対してプロパティ (nodeName) にアクセスしようとしてエラーが発生する可能性があります。parentNode の戻り値が DOMNode または null であることを意識し、null の可能性を考慮したコーディングを心がけましょう。