Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】XMLReader::readInnerXml()メソッドの使い方

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

作成日: 更新日:

基本的な使い方

readInnerXmlメソッドは、XMLReaderクラスに属し、XML文書の現在のノードの内部コンテンツをXML文字列として読み取るためのメソッドです。XMLReaderは、PHPにおいて大規模なXML文書をメモリ全体に読み込むことなく、効率的にストリーム形式で処理するための拡張機能であり、リソース消費を抑えながらXMLを解析する際に利用されます。

このreadInnerXmlメソッドを呼び出すと、XMLReaderのカーソルが現在指しているノードが要素である場合に、その要素の開始タグと終了タグの間に存在するすべての内容が、完全なXML形式の文字列として返されます。これには、子要素、テキストノード、コメント、CDATAセクションなど、当該要素に含まれるあらゆる情報が含まれます。例えば、特定のXML要素のサブツリー全体をまとめて抽出し、それを別の方法で解析したり、他の処理に渡したりする場合に非常に役立ちます。

メソッドが正常に実行されると、XMLReaderのカーソルは、読み取った要素の終了タグを越えて、自動的に次のノードへと移動します。これにより、開発者は手動で子ノードを一つずつ辿る手間を省き、次の主要な要素の処理にスムーズに進むことができます。もし現在のノードが要素ではない場合や、読み取り中に何らかのエラーが発生した場合は、空文字列が返されるか、falseが返されることがあります。XML文書から特定のブロックを効率的に抽出する上で、このメソッドは非常に重要な役割を果たします。

構文(syntax)

1<?php
2// XMLReaderオブジェクトを作成
3$reader = new XMLReader();
4
5// 読み込むXML文字列を設定
6$xmlString = '<catalog><book><title>PHP Programming</title><author>John Doe</author></book><magazine>Web Dev Monthly</magazine></catalog>';
7$reader->xml($xmlString);
8
9// 目的のノード(ここでは<book>)に到達するまで読み進める
10while ($reader->read()) {
11    // ノードが要素型で、名前が'book'の場合
12    if ($reader->nodeType == XMLReader::ELEMENT && $reader->name === 'book') {
13        // 現在のノード(<book>)の内部XMLを読み込む
14        $innerXml = $reader->readInnerXml();
15        echo $innerXml; // 出力例: <title>PHP Programming</title><author>John Doe</author>
16        break; // 最初の<book>要素を見つけたら終了
17    }
18}
19
20// リーダーを閉じる
21$reader->close();
22?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

string

現在のノードの内部XML(開始タグと終了タグの間の内容)をUTF-8エンコーディングされた文字列として返します。

関連コンテンツ