xml_parse

(PHP 4, PHP 5, PHP 7, PHP 8)

xml_parseXML ドキュメントの処理を開始する

説明

xml_parse ( XMLParser $parser , string $data , bool $is_final = false ) : int

xml_parse() は XML ドキュメントを処理します。 設定されているイベントのハンドラが、必要に応じてコールされます。

パラメータ

parser

使用する XML パーサへのリファレンス。

data

処理するデータ。ドキュメントは、 is_final パラメータが設定され、 最後のデータが処理され true になるまで、新規のデータに関して 複数回 xml_parse() をコールすることにより、 部分毎で処理することが可能です。

is_final

true が設定された場合、data は この処理の間に送られた最後のデータということになります。

返り値

成功した場合に 1、失敗した場合に 0 を返します。

処理が成功しなかった場合、エラー情報を xml_get_error_code(), xml_error_string(), xml_get_current_line_number(), xml_get_current_column_number() および xml_get_current_byte_index() により取得可能です。

注意:

エンティティのエラーが報告されるのは、ドキュメントの最後で行われます。 つまり is_finaltrue に設定されている場合だけです。

変更履歴

バージョン 説明
8.0.0 引数 parser は、 XMLParser インスタンスを期待するようになりました。 これより前のバージョンでは、リソースが期待されていました。

例1 巨大なXML文書を切り分けてパースする

この例は、 どのようにして巨大なXML文書を読み取り、チャンクに分けて パースするのかを示しています。 これにより、文書全体をメモリに置く必要がないようにします。 エラーハンドリングは例を簡単にするため省略しています。

<?php
$stream 
fopen('large.xml''r');
$parser xml_parser_create();
// ハンドラをセットアップする
while (($data fread($stream16384))) {
    
xml_parse($parser$data); // 現在のチャンクをパースする
}
xml_parse($parser''true); // パースを終了する
xml_parser_free($parser);
fclose($stream);