【PHP8.x】Dom\XPath::registerNamespace()メソッドの使い方
registerNamespaceメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
registerNamespaceメソッドは、XPathクエリで名前空間プレフィックスを使用するために、プレフィックスと名前空間URIを関連付ける登録を実行するメソッドです。XMLドキュメントでは、要素名の衝突を避ける目的で名前空間が利用されることがあります。名前空間が設定された要素をXPath式で扱うには、例えばns:elementのように、コロンで区切られたプレフィックスを付けて指定する必要があります。このメソッドを使うことで、第1引数に指定した任意のプレフィックス文字列と、第2引数に指定したそれに対応する名前空間URIを、現在のDom\XPathオブジェクトに登録できます。この登録が完了すると、後続のqueryメソッドやevaluateメソッドで実行するXPath式の中で、そのプレフィックスが有効になり、名前空間を持つノードを正しく選択できるようになります。この登録は、メソッドを呼び出したDom\XPathインスタンスに対してのみ有効であり、元のXMLドキュメント自体を変更するものではありません。メソッドは登録に成功した場合にtrueを、失敗した場合にfalseを返します。
構文(syntax)
1<?php 2$xmlString = <<<XML 3<?xml version="1.0" encoding="UTF-8"?> 4<books xmlns:b="http://example.com/books"> 5 <b:book> 6 <b:title>PHP Master</b:title> 7 </b:book> 8</books> 9XML; 10 11$doc = new DOMDocument(); 12$doc->loadXML($xmlString); 13 14$xpath = new Dom\XPath($doc); 15 16// XPathクエリで使用する名前空間の接頭辞 'prefix' をURIに関連付けます 17$xpath->registerNamespace('prefix', 'http://example.com/books'); 18 19// 登録した接頭辞 'prefix' を使って要素を検索します 20$nodes = $xpath->query('//prefix:title'); 21 22echo $nodes[0]->textContent;
引数(parameters)
string $prefix, string $namespaceURI
- string $prefix: 登録する名前空間の接頭辞を指定する文字列
- string $namespaceURI: 登録する名前空間のURIを指定する文字列
戻り値(return)
bool
指定された名前空間の登録が成功した場合はtrueを、失敗した場合はfalseを返します。