【PHP8.x】getElementsByTagNameNSメソッドの使い方
getElementsByTagNameNSメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
getElementsByTagNameNSメソッドは、XMLやHTMLドキュメントから、指定された名前空間URIとタグ名(ローカル名)に一致するすべての要素(エレメント)を検索し、それらをまとめて取得するメソッドです。このメソッドは、Dom\Documentクラスに属しており、ドキュメント全体の中から特定の条件に合う要素を探し出す際に利用されます。
プログラミングにおいて、XMLなどのドキュメントには、同じタグ名であっても異なる意味を持つ要素が存在する場合があります。これを区別するために「名前空間(Namespace)」という仕組みが使われます。たとえば、<svg:rect>と<html:p>のように、プレフィックスによって所属する名前空間が異なり、それぞれのタグが異なる定義を持つことがあります。getElementsByTagNameNSメソッドでは、この名前空間URIを指定することで、より正確に目的の要素を特定することが可能です。
メソッドの引数として、一つ目に検索したい名前空間URIを渡します。もしすべての名前空間を対象としたい場合は、'*'(アスタリスク)を指定します。二つ目の引数には、検索したい要素のローカル名、つまりプレフィックスを含まないタグ名を指定します。こちらもすべてのローカル名を対象とする場合は'*'を指定できます。
このメソッドは、条件に合致する要素が見つかった場合、それらをDom\NodeListというオブジェクトの形で返します。Dom\NodeListは、見つかった要素のリストを効率的に扱うためのものです。もし一致する要素が見つからなかった場合でも、空のDom\NodeListオブジェクトが返されるため、常に安全に処理を進めることができます。XMLドキュメントの特定の構造を持つデータを抽出したい場合などに、このメソッドは非常に強力なツールとなります。
構文(syntax)
1<?php 2 3$xmlString = <<<XML 4<?xml version="1.0" encoding="UTF-8"?> 5<root xmlns="http://example.com/ns1" xmlns:book="http://example.com/ns/books"> 6 <book:title>PHP Programming</book:title> 7 <item>Generic Item</item> 8 <book:author>John Doe</book:author> 9</root> 10XML; 11 12$document = new Dom\Document(); 13$document->loadXML($xmlString); 14 15$nodeList = $document->getElementsByTagNameNS('http://example.com/ns/books', 'title'); 16 17?>
引数(parameters)
?string $namespace, string $localName
- ?string $namespace: 要素の名前空間を指定する文字列。
nullを指定すると、名前空間を使用しない要素を検索します。 - string $localName: 検索する要素のローカル名(名前空間プレフィックスを除いた名前)を指定する文字列。
戻り値(return)
Dom\NodeList
指定された名前空間(namespace)に属する、すべての要素ノードをDom\NodeListオブジェクトとして取得します。