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

# xml_parse

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

xml_parse — XML ドキュメントの処理を開始する

### 説明

function 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_final` が `true` に設定されている場合だけです。

### 変更履歴

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

### 例

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

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

    <?php
    $stream = fopen('examples/book-simple.xml', 'r');
    $parser = xml_parser_create();

    xml_set_element_handler(
        $parser,
        function($parser, $name, $attributes) { echo $name, PHP_EOL; },
        function($parser, $name) { echo $name, PHP_EOL; }
    );

    while (($data = fread($stream, 16384))) {
        xml_parse($parser, $data); // 現在のチャンクをパースする
    }
    xml_parse($parser, '', true); // パースを終了する
    fclose($stream);

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open