【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を返します。

【PHP8.x】getNamedItemNSメソッドの使い方 | いっしー@Webエンジニア