【PHP8.x】getNamedItemNSメソッドの使い方
getNamedItemNSメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
『getNamedItemNSメソッドは、DOMNamedNodeMapオブジェクトの中から、指定された名前空間URIとローカル名に一致するノードを取得するメソッドです』
このメソッドは、XML文書などで名前空間が使用されている場合に、特定の属性ノードを正確に識別して取得するために利用されます。第一引数には対象ノードの名前空間URIを文字列で指定し、第二引数には名前空間接頭辞を除いたローカル名を指定します。例えば、<book:title>という属性を取得したい場合、book接頭辞に対応する名前空間URIと、ローカル名であるtitleを引数として渡します。処理の結果、指定した条件に合致するノードが見つかった場合は、そのノードを表すDOMNodeオブジェクトが返されます。該当するノードが存在しなかった場合はnullを返します。そのため、メソッドの戻り値を利用する際には、nullチェックを行うことが重要です。名前空間を考慮しないgetNamedItem()メソッドとは異なり、このメソッドは名前の衝突を避け、より厳密にノードを特定する必要がある場合に不可欠です。
構文(syntax)
1<?php 2 3// XMLデータを用意します 4$xmlString = <<<XML 5<?xml version="1.0" encoding="UTF-8"?> 6<book xmlns:bk="urn:example:book-meta"> 7 <title bk:lang="en">PHP Reference</title> 8</book> 9XML; 10 11// DOMDocumentオブジェクトを作成し、XMLを読み込みます 12$doc = new DOMDocument(); 13$doc->loadXML($xmlString); 14 15// <title>要素の属性の集合 (DOMNamedNodeMap) を取得します 16$attributes = $doc->getElementsByTagName('title')->item(0)->attributes; 17 18// 名前空間URIとローカル名を指定して属性ノード (DOMAttr) を取得します 19// public DOMNamedNodeMap::getNamedItemNS(?string $namespace, string $localName): ?DOMNode 20$attrNode = $attributes->getNamedItemNS('urn:example:book-meta', 'lang'); 21 22if ($attrNode) { 23 // 取得した属性ノードの値を出力します (出力: en) 24 echo $attrNode->value; 25} 26 27?>
引数(parameters)
?string $namespace, string $localName
- ?string $namespace: 検索対象となる属性のネームスペースを指定する文字列。省略可能で、指定しない場合は null となります。
- string $localName: 検索対象となる属性のローカル名を指定する文字列。
戻り値(return)
?DOMNode
指定された名前空間URIとローカル名を持つ属性ノードを返します。属性が存在しない場合はnullを返します。