【PHP8.x】XMLReader::getAttributeNs()メソッドの使い方
getAttributeNsメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
getAttributeNsメソッドは、PHPのXMLReader拡張機能に属し、XML文書をストリーム形式で読み込む際に、現在のノードが持つ特定の名前空間に属する属性の値を効率的に取得するために実行するメソッドです。このメソッドは、XML文書内で複数の名前空間が使用されている場合に、目的の属性を正確に識別し、その値を取り出すのに非常に役立ちます。
利用する際には、取得したい属性の名前空間URIを最初の引数として、属性のローカル名を二番目の引数として指定します。例えば、http://example.com/nsというURIを持つ名前空間に属し、ローカル名がidである属性の値を取得したい場合に使用します。このメソッドが実行されると、指定された名前空間とローカル名に一致する属性が現在のノードに見つかった場合は、その属性の値が文字列として返されます。しかし、現在のノードに該当する属性が存在しない場合は、nullが返されるため、戻り値の確認を行うことが重要です。XMLReaderクラスは、大規模なXMLファイルをメモリに全て読み込むことなく処理できるため、このgetAttributeNsメソッドは、リソース効率の良いXMLデータ処理において、特定の名前空間を持つ属性情報を取得する上で中心的な役割を果たします。
構文(syntax)
1<?php 2 3$reader = new XMLReader(); 4// サンプルXMLをロード。'http://example.com/ns' に属する 'id' 属性を持つ要素を想定 5$reader->XML('<data xmlns:ex="http://example.com/ns"><item ex:id="item-123" /></data>'); 6 7// XMLを読み込み、'item' ノードを探す 8while ($reader->read()) { 9 if ($reader->nodeType === XMLReader::ELEMENT && $reader->localName === 'item') { 10 // 'item' ノードから、名前空間 'http://example.com/ns' に属する 'id' 属性の値を取得する 11 $localName = 'id'; 12 $namespaceURI = 'http://example.com/ns'; 13 $attributeValue = $reader->getAttributeNs($localName, $namespaceURI); 14 // $attributeValue には "item-123" が格納されます(属性が存在する場合) 15 break; // 目的の属性値を取得したらループを抜ける 16 } 17} 18$reader->close();
引数(parameters)
string $localName, string $namespace
- string $localName: 属性のローカル名を指定する文字列
- string $namespace: 属性の名前空間URIを指定する文字列
戻り値(return)
string|false
指定された名前空間と属性名の属性値が文字列で返されます。属性が見つからない場合は false が返されます。