【PHP8.x】getElementsByTagNameNSメソッドの使い方
getElementsByTagNameNSメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
getElementsByTagNameNSメソッドは、Dom\HTMLElementクラスに属し、HTMLやXMLドキュメント内で指定された名前空間URIとローカル名を持つ子孫要素のリストを取得するために使用されるメソッドです。
このメソッドは、名前空間を使用する複雑なドキュメント構造をプログラム的に解析する際に活用されます。第一引数には検索したい要素の名前空間URIを文字列で指定します。例えば、SVG要素であればhttp://www.w3.org/2000/svgといったURIです。全ての子孫要素を対象とする場合は*(アスタリスク)を指定できます。第二引数には検索したい要素のローカル名を文字列で指定します。例えば、pathやrectといったタグ名です。こちらも全てのローカル名を対象とする場合は*を指定できます。
メソッドは、該当する要素のリストをDom\HTMLCollectionオブジェクトとして返します。このコレクションはライブコレクションであり、元となるドキュメントツリーに変更が加えられると、その変更が自動的に反映されます。
システムエンジニアを目指す初心者の方々にとって、Webアプリケーション開発においてHTMLドキュメント内に埋め込まれたSVGなどのXML名前空間を持つコンテンツから、特定の要素を効率的に抽出し操作する場面で非常に役立ちます。これにより、名前空間を持つ要素の検索と動的な操作を正確かつ簡潔に行うことができます。
構文(syntax)
1<?php 2$domDocument = new Dom\Document(); 3$domDocument->loadHTML('<html xmlns:prefix="http://example.com/namespace-uri"><body><prefix:element-name></prefix:element-name></body></html>'); 4 5$domHTMLElementContext = $domDocument->getElementsByTagName('body')->item(0); 6 7$targetNamespaceURI = 'http://example.com/namespace-uri'; 8$targetLocalName = 'element-name'; 9 10$resultingDomHTMLCollection = $domHTMLElementContext->getElementsByTagNameNS($targetNamespaceURI, $targetLocalName); 11?>
引数(parameters)
?string $namespace, string $localName
- ?string $namespace: 対象の要素のXML名前空間URIを指定します。省略可能で、指定しない場合は名前空間を考慮しません。
- string $localName: 検索したい要素のローカル名(名前空間プレフィックスを含まない名前)を指定します。
戻り値(return)
Dom\NodeList
指定された名前空間に一致する要素のリストを Dom\NodeList オブジェクトとして返します。