【PHP8.x】XMLReader::localNameプロパティの使い方
localNameプロパティの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
localNameプロパティは、XMLReaderオブジェクトが現在指しているノードのローカル名を文字列として保持するプロパティです。
XMLReaderクラスは、大量のXMLデータでもメモリを効率的に使用しながら、XMLドキュメントを順方向(前方のみ)に読み進めて解析するための機能を提供します。このlocalNameプロパティは、XMLReaderが現在位置しているノード(要素や属性など)について、その名前空間のプレフィックスを除いた本来の名前を取得するために使用されます。
具体的には、XMLドキュメント内で「prefix:elementName」のように名前空間が指定された要素や属性がある場合、localNameプロパティはそのプレフィックス部分を除いた「elementName」の部分を返します。もし名前空間が使用されていない通常のXMLノードであれば、そのノード名自体がローカル名として返されます。
このプロパティは、XMLドキュメントを解析する際に、特定の要素や属性の種類を識別し、それに応じて処理を分岐させたい場合に非常に有用です。例えば、さまざまな名前空間で同じ名前の要素が存在する場合でも、名前空間URIとこのlocalNameプロパティを組み合わせることで、意図するノードを正確に特定し、適切な処理を行うことが可能になります。
localNameプロパティは読み取り専用であり、XMLReader::read()メソッドで次のノードへ移動するたびに、現在処理中のノードの情報に基づいて自動的に更新されます。これにより、初心者の方でもXML構造を簡単に辿りながら、必要な情報を効率的に抽出できます。
構文(syntax)
1<?php 2 3$reader = new XMLReader(); 4$xmlContent = '<root><item id="1"><ns:productName>PHP Basics</ns:productName></item></root>'; 5 6if ($reader->xml($xmlContent)) { 7 while ($reader->read()) { 8 // 現在のノードが要素(開始タグ)の場合 9 if ($reader->nodeType === XMLReader::ELEMENT) { 10 // XMLノードのローカル名(プレフィックスを含まない名前)を取得 11 echo "Current element's local name: " . $reader->localName . "\n"; 12 } 13 } 14 $reader->close(); 15} else { 16 echo "Failed to load XML content.\n"; 17} 18 19?>
引数(parameters)
引数なし
引数はありません
戻り値(return)
string
現在のノードのローカル名(名前空間プレフィックスを除いた名前)を文字列として返します。