【PHP8.x】Dom\HTMLDocument::nodeNameプロパティの使い方
nodeNameプロパティの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
nodeNameプロパティは、DOM(Document Object Model)のHTMLDocumentオブジェクトにおけるノードの名前を保持するプロパティです。具体的には、このプロパティは常に "#document" という文字列を返します。HTMLDocumentオブジェクトは、HTMLドキュメント全体を表すノードであり、その名前は常に固定されているためです。
システムエンジニアを目指す初心者の方にとって、このプロパティの理解はDOM構造の把握に役立ちます。DOMは、HTMLやXMLドキュメントをツリー構造で表現し、JavaScriptなどのスクリプト言語からアクセスして操作できるようにする仕組みです。HTMLDocumentオブジェクトは、そのDOMツリーのルートノードにあたり、nodeNameプロパティを通じて、それがドキュメントノードであることを識別できます。
nodeNameプロパティは、他の種類のDOMノード(例えば、要素ノードやテキストノード)でも利用できます。しかし、HTMLDocumentオブジェクトにおいては、その値は常に "#document" であるという点が重要です。これは、ドキュメントノードの種類を特定し、他のノードとの区別を明確にするために役立ちます。
このプロパティの利用例としては、特定のノードがドキュメントノードであるかどうかをプログラム内で判定する際に使用できます。例えば、DOMツリーを走査中に、特定のノードのnodeNameプロパティを調べ、"#document" であればドキュメントノードとして特別な処理を行うといった実装が考えられます。
構文(syntax)
1<?php 2$dom = new DomDocument(); 3$dom->loadHTML('<html><body><p id="test">Hello</p></body></html>'); 4$element = $dom->getElementById('test'); 5echo $element->nodeName; // "p" 6?>
引数(parameters)
引数なし
引数はありません
戻り値(return)
string
Dom\HTMLDocument クラスの nodeName プロパティは、ノードの名前を表す文字列を返します。
サンプルコード
PHP DomDocument nodeNameでドキュメント名を取得する
1<?php 2 3/** 4 * Dom\HTMLDocumentのnodeNameプロパティの使用例を示す関数 5 * 6 * HTMLドキュメントオブジェクトを作成し、そのノード名を取得して表示します。 7 * 8 * @return void 9 */ 10function showDocumentNodeName(): void 11{ 12 // 1. Dom\HTMLDocument クラスのインスタンスを生成します。 13 // これは、HTMLドキュメント全体を表すオブジェクトです。 14 $document = new Dom\HTMLDocument(); 15 16 // 2. loadHTML() メソッドで簡単なHTML文字列を読み込みます。 17 $htmlString = '<!DOCTYPE html><html><head><title>Test</title></head><body><p>Hello</p></body></html>'; 18 $document->loadHTML($htmlString); 19 20 // 3. nodeName プロパティにアクセスしてノード名を取得します。 21 // Dom\HTMLDocument オブジェクトの場合、nodeName は常に "#document" という 22 // 特殊な文字列を返します。これはドキュメントノード自体を表します。 23 $nodeName = $document->nodeName; 24 25 // 4. 取得したノード名を出力します。 26 echo "ドキュメントのノード名: " . $nodeName . PHP_EOL; 27} 28 29// 関数を実行します。 30showDocumentNodeName(); 31 32// 期待される出力: 33// ドキュメントのノード名: #document 34 35?>
Dom\HTMLDocumentクラスのnodeNameプロパティは、HTMLドキュメントオブジェクト自体のノード名を取得するための読み取り専用プロパティです。このプロパティは引数を取らず、戻り値としてノード名を表す文字列(string)を返します。
サンプルコードでは、まずnew Dom\HTMLDocument()でHTMLドキュメントを操作するためのオブジェクトを生成します。次にloadHTML()メソッドを使って、文字列形式のHTMLデータをオブジェクトに読み込んでいます。そして、$document->nodeNameのようにプロパティにアクセスすることで、そのドキュメントのノード名を取得しています。
Dom\HTMLDocumentオブジェクトの場合、nodeNameプロパティは常に#documentという固定の文字列を返します。これは、このオブジェクトがHTMLの特定のタグ(例:<p>タグ)ではなく、ドキュメント全体を表す特殊なノードであることを示しています。コードの最後では、取得した#documentという文字列を画面に出力しています。このプロパティは、処理対象のノードがドキュメントノードであるかを確認する際などに利用できます。
Dom\HTMLDocumentクラスのnodeNameプロパティは、一般的なHTML要素の名前(例: divやp)を返すものではありません。このプロパティは常に#documentという固定の文字列を返します。これは、Dom\HTMLDocumentオブジェクト自体がHTMLドキュメント全体のルートノード、つまりドキュメントノードを表しているためです。もしHTMLドキュメント内の個々の要素のノード名を取得したい場合は、その要素に対応するDom\ElementなどのオブジェクトからnodeNameプロパティにアクセスする必要があります。このプロパティは読み取り専用であり、Dom\HTMLDocumentが正しく初期化され、HTMLが読み込まれている状態で利用することが前提となりますのでご注意ください。