【PHP8.x】getAttributeNSメソッドの使い方
getAttributeNSメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
getAttributeNSメソッドは、XMLドキュメントの要素に設定された名前空間付きの属性の値を取得するメソッドです。このメソッドは、PHPのDOM(Document Object Model)拡張機能の一部であり、DOMElementオブジェクトから呼び出されます。
XML文書では、異なるスキーマや語彙から提供される同名の属性が混在する際に、それらを識別するために「名前空間」という仕組みが利用されます。getAttributeNSメソッドは、この名前空間の概念を用いて、特定の名前空間に属する属性の値を正確に取得することを可能にします。
このメソッドを使用する際は、取得したい属性の名前空間URI(Uniform Resource Identifier)と、その属性のローカル名(名前空間プレフィックスを含まない、属性本来の名前)を引数として指定します。たとえば、XML要素が「<svg:rect xlink:href="...">」という形式で属性を持つ場合、xlink:href属性の値を特定するためには、xlinkの名前空間URIとhrefというローカル名を渡す必要があります。
もし指定された名前空間URIとローカル名に合致する属性が要素に存在しない場合、このメソッドはnullを返します。これにより、属性の有無をプログラム上で安全に確認し、適切なエラー処理や条件分岐を行うことができます。
XML文書を扱うシステムにおいて、名前空間によって区別された属性の値を正確に読み取り、処理を進めるために、getAttributeNSメソッドは欠かせない機能を提供します。
構文(syntax)
1<?php 2// DOMElementオブジェクトの具体的な例を準備します 3// 例として、ネームスペースを持つXMLをパースします 4$xmlString = '<root xmlns:my="http://example.com/my/namespace"><my:item my:id="123" my:name="sample" /></root>'; 5$dom = new DOMDocument(); 6$dom->loadXML($xmlString); 7 8// 'my:item'要素(ネームスペースURI 'http://example.com/my/namespace'、ローカル名 'item')を取得します 9$itemElement = $dom->getElementsByTagNameNS('http://example.com/my/namespace', 'item')->item(0); 10 11// DOMElementオブジェクトが存在する場合にgetAttributeNSメソッドを使用します 12if ($itemElement instanceof DOMElement) { 13 // getAttributeNSメソッドの構文例 14 // 第一引数に属性のネームスペースURI、第二引数に属性のローカル名を指定します 15 $attributeValue = $itemElement->getAttributeNS('http://example.com/my/namespace', 'id'); 16 17 // $attributeValue には "123" が格納されます 18 // 属性が見つからない場合は false が返されます 19} 20?>
引数(parameters)
?string $namespace, string $localName
- ?string $namespace: 属性のXML名前空間を指定する文字列。省略可能ですが、指定しない場合はnullとなります。
- string $localName: 属性のローカル名(名前空間プレフィックスを含まない名前)を指定する文字列。
戻り値(return)
string
指定された名前空間(namespace)に属する属性の値(string型)を返します。属性が存在しない場合は空文字列を返します。