【PHP8.x】getElementsByTagNameNSメソッドの使い方
getElementsByTagNameNSメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
getElementsByTagNameNSメソッドは、XML文書などのツリー構造を持つデータ(DOM)から、特定の基準に合致する子孫要素を効率的に検索し取得するために実行されるメソッドです。このメソッドは、呼び出し元のDom\Elementオブジェクトを起点として、その要素の子孫全体の中から、指定された名前空間URIとローカル名を持つすべての要素を見つけ出します。
第一引数の $namespace には、検索したい要素が所属する名前空間のURI(Uniform Resource Identifier)を指定します。これは、異なるXML語彙の要素を識別し、衝突を防ぐために使用されるものです。「*」(アスタリスク)を指定した場合は、名前空間を問わずに要素を検索対象とします。
第二引数の $localName には、検索したい要素のローカル名、つまりタグ名から名前空間の接頭辞を除いた部分を指定します。「*」を指定した場合は、ローカル名を問わずに要素を検索します。
このメソッドは、検索条件に合致したすべてのDom\Elementオブジェクトを格納したDom\NodeListオブジェクトを返します。もし該当する要素が一つも見つからなかった場合でも、空のDom\NodeListオブジェクトが返されます。PHPのDOM拡張機能において、名前空間を利用している複雑なXML文書から特定の情報を効率的かつ正確に抽出する際に、非常に有用な機能として活用されます。
構文(syntax)
1<?php 2 3$xmlString = <<<XML 4<?xml version="1.0" encoding="UTF-8"?> 5<bookstore> 6 <book xmlns:b="urn:books-schema"> 7 <b:title>PHP 8 プログラミング</b:title> 8 </book> 9 <magazine xmlns:m="urn:magazines-schema"> 10 <m:title>月刊システム開発</m:title> 11 </magazine> 12</bookstore> 13XML; 14 15$doc = new DOMDocument(); 16$doc->loadXML($xmlString); 17 18// bookstore要素(ルート要素)を取得 19$rootElement = $doc->documentElement; 20 21// bookstore要素の子孫から、名前空間URIが "urn:books-schema" で、 22// ローカル名が "title" の要素を取得します。 23$bookTitles = $rootElement->getElementsByTagNameNS('urn:books-schema', 'title'); 24 25// 取得した要素のテキスト内容を出力します 26echo $bookTitles[0]->nodeValue; // "PHP 8 プログラミング" 27 28?>
引数(parameters)
?string $namespace, string $localName
- ?string $namespace: 要素を検索する名前空間を指定します。
nullの場合は、名前空間を考慮しません。 - string $localName: 検索する要素のローカル名(名前空間プレフィックスを含まない名前)を指定します。
戻り値(return)
DOMNodeList
指定された名前空間とタグ名に一致するすべての要素のコレクションを DOMNodeList オブジェクトとして返します。