【PHP8.x】XMLReader::readString()メソッドの使い方
readStringメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
readStringメソッドは、PHPのXMLReaderクラスのインスタンスが現在位置しているノードの文字列値を取得するメソッドです。このメソッドは、XMLドキュメントを順方向に読み進める中で、特定のノードからテキストデータを効率的に抽出する際に利用されます。
具体的に、readStringメソッドは、現在のノードの種類に応じて異なる文字列を返します。もし現在のノードがテキストノード、CDATAセクションノード、コメントノード、または処理命令ノードである場合、そのノード自身が保持しているコンテンツの文字列をそのまま取得します。例えば、<example>これはテキストです</example>のようなXML構造で、「これはテキストです」というテキストノードに位置している場合、「これはテキストです」という文字列が得られます。
一方、現在のノードが要素ノードである場合、その要素に含まれるすべての子孫テキストノード、CDATAセクションノード、およびエンティティ参照ノードの連結された値を返します。これは、特定の要素内の全てのテキストコンテンツを一度にまとめて取得したい場合に特に有用です。
このメソッドは、XMLReaderのread()メソッドによってノードを順次読み進めた後に、現在のノードから必要な文字列情報を抽出するために使用されます。readStringメソッドの戻り値は文字列型であり、もし現在のノードに文字列値が存在しない場合は空の文字列が返されます。
構文(syntax)
1<?php 2 3$reader = new XMLReader(); 4$xmlString = '<data><item>Sample Text</item></data>'; 5 6if (!$reader->xml($xmlString)) { 7 echo "Failed to load XML string."; 8 exit(1); 9} 10 11// 'item'要素に移動するまでノードを読み進める 12while ($reader->read() && !($reader->nodeType === XMLReader::ELEMENT && $reader->name === 'item')) { 13 // 目的の要素が見つかるまで読み進める 14} 15 16// 現在のノードが'item'要素であれば、そのテキストコンテンツを読み込む 17if ($reader->nodeType === XMLReader::ELEMENT && $reader->name === 'item') { 18 $content = $reader->readString(); // ここで現在のノードの文字列コンテンツを取得 19 echo "Content of 'item' element: " . $content . PHP_EOL; 20} 21 22$reader->close(); 23 24?>
引数(parameters)
引数なし
引数はありません
戻り値(return)
string|false
XMLReader::readStringは、現在のノードのテキストコンテンツを文字列として返します。ノードがテキストノードでない場合や、読み取りに失敗した場合はfalseを返します。