【PHP8.x】DOMXPath::registerNodeNamespacesプロパティの使い方
registerNodeNamespacesプロパティの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
『registerNodeNamespacesプロパティは、XPathクエリ実行時にコンテキストノードの名前空間を自動的に登録するかどうかを制御するためのブール値(trueまたはfalse)を保持するプロパティです。このプロパティのデフォルト値はtrueに設定されています。trueの場合、DOMXPath::query()やDOMXPath::evaluate()メソッドを呼び出す際に、第2引数で指定されたコンテキストノードに紐づく名前空間のプレフィックスとURIが、自動的にXPathエンジンに登録されます。これにより、開発者はDOMXPath::registerNamespace()メソッドを使って事前に名前空間を一つずつ手動で登録する手間を省くことができ、XPath式の中でコンテキストノードと同じ名前空間プレフィックスを直接使用することが可能になります。反対に、このプロパティの値をfalseに設定すると、名前空間の自動登録は行われません。そのため、名前空間を含むXML要素をクエリの対象とする場合は、必ずregisterNamespace()メソッドで明示的にプレフィックスを登録する必要があります。
構文(syntax)
1<?php 2 3$xmlString = <<<XML 4<?xml version="1.0" encoding="UTF-8"?> 5<documents xmlns:doc="http://example.com/documents"> 6 <doc:document> 7 <doc:title>PHPの基本</doc:title> 8 </doc:document> 9</documents> 10XML; 11 12$dom = new DOMDocument(); 13$dom->loadXML($xmlString); 14 15$xpath = new DOMXPath($dom); 16 17// 指定したノードのスコープ内にある名前空間を自動的に登録する 18$xpath->registerNodeNamespaces($dom->documentElement, true); 19 20// 登録した名前空間プレフィックス 'doc' を使って要素を検索 21$query = '//doc:title'; 22$nodeList = $xpath->query($query); 23 24echo $nodeList[0]->nodeValue; 25
引数(parameters)
引数なし
引数はありません
戻り値(return)
bool
このプロパティへの代入は、名前空間の登録が成功したかどうかを示す真偽値を返します。