xml_parse

Start parsing an XML document

&reftitle.description; `int` `xml_parse` `XMLParser` `parser` `string` `data` `bool` `is_final`&false;

`xml_parse` parses an XML document. The handlers for the configured events are called as many times as necessary.

&reftitle.parameters;

`parser`

- A reference to the XML parser to use.

`data`

- Chunk of data to parse. A document may be parsed piece-wise by calling `xml_parse` several times with new data, as long as the `is_final` parameter is set and &true; when the last data is parsed.

`is_final`

- If set and &true;, `data` is the last piece of data sent in this parse.

&reftitle.returnvalues;

Returns 1 on success or 0 on failure.

For unsuccessful parses, error information can be retrieved with `xml_get_error_code`, `xml_error_string`, `xml_get_current_line_number`, `xml_get_current_column_number` and `xml_get_current_byte_index`.

Some errors (such as entity errors) are reported at the end of the data, thus only if `is_final` is set and &true;.

&reftitle.changelog;

&Version; | &Description;
&xml.changelog.parser-param;

&reftitle.examples;

### Chunked parsing of large XML documents

This example shows how large XML documents can be read and parsed in chunks, so that it not necessary to keep the whole document in memory. Error handling is omitted for brevity.

    <?php
    $stream = fopen('large.xml', 'r');
    $parser = xml_parser_create();
    // set up the handlers here
    while (($data = fread($stream, 16384))) {
        xml_parse($parser, $data); // parse the current chunk
    }
    xml_parse($parser, '', true); // finalize parsing
    xml_parser_free($parser);
    fclose($stream);