【PHP8.x】getAttributeNodeNSメソッドの使い方

getAttributeNodeNSメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

getAttributeNodeNSメソッドは、HTMLやXML文書の要素が持つ属性の中から、指定された名前空間とローカル名に合致する属性ノードを取得するメソッドです。

このメソッドは、PHPのDOM拡張機能の一部であり、ウェブページの要素をプログラムで操作する際に利用されるDom\HTMLElementクラスに属しています。ウェブページを構成する各要素はオブジェクトとして扱われ、そのオブジェクトから属性情報を取得する機能を提供します。

特に、XML文書や、HTML内にSVG(Scalable Vector Graphics)などの他のXMLベースの要素が埋め込まれている場合、複数の異なるXMLボキャブラリが混在することがあります。このような状況で属性名の衝突を避けるために「名前空間」という概念が用いられます。getAttributeNodeNSメソッドは、この名前空間を考慮して属性を探し出すことができます。

具体的には、このメソッドは二つの引数を受け取ります。一つ目は属性が属する「名前空間URI」を表す文字列、二つ目は属性の「ローカル名」を表す文字列です。これらの引数で指定された条件に完全に一致する属性ノード(DOMAttrオブジェクト)が見つかった場合、そのオブジェクトを返します。もし該当する属性が見つからなかった場合は、nullを返します。

このメソッドを使用することで、通常では取得が難しい、名前空間に厳密に紐づけられた属性情報を正確に取得し、その値を参照したり操作したりすることが可能になります。

構文(syntax)

1<?php
2
3use Dom\Document;
4use Dom\HTMLElement;
5use Dom\DOMAttr;
6
7// Dom\HTMLElement のインスタンスに対して呼び出す構文です。
8// ここでは例として Dom\Document を使ってHTMLElementを作成します。
9$document = new Document();
10$document->loadHTML('<div xmlns:my="http://example.com/my" my:data-id="123"></div>');
11/** @var HTMLElement $element */
12$element = $document->getElementsByTagName('div')->item(0);
13
14// 名前空間URI 'http://example.com/my' とローカル名 'data-id' を持つ属性ノードを取得します。
15$attributeNode = $element->getAttributeNodeNS('http://example.com/my', 'data-id');
16
17// $attributeNode は Dom\DOMAttr のインスタンス、または属性が見つからない場合は null になります。

引数(parameters)

?string $namespace, string $localName

  • ?string $namespace: 属性のネームスペースURIを指定します。省略可能で、指定しない場合は null または空文字列が渡されます。
  • string $localName: 属性のローカル名を指定します。

戻り値(return)

?Dom\Attr

指定された名前空間とローカル名を持つ属性ノードをDom\Attrオブジェクトとして返します。属性が存在しない場合はnullを返します。

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