xml_parse

xml_parse($parser, $data, $is_final = false)

Przetwarza część XML i wywołuje ustawione funkcje. Dane można przekazywać w kawałkach – na przykład po 8 kB z pliku – a ostatni kawałek oznacza $is_final = true. Funkcja zwraca 1 przy powodzeniu i 0 przy błędzie (liczbę, nie true/false).

Parametry

  • $parser – parser.
  • $data – część XML.
  • $is_final – true dla ostatniego kawałka.

Przykłady

$parser = xml_parser_create("UTF-8");
$count = 0;
xml_set_element_handler($parser, function () use (&$count) { $count++; }, function () {});
// XML w kawałkach – tak czyta się duży plik przez fread
$chunks = array("<catalog><pro", "duct/><product/>", "</catalog>");
foreach ($chunks as $i => $chunk) {
    if (!xml_parse($parser, $chunk, $i === count($chunks) - 1)) {
        exit("Błąd XML: " . xml_error_string(xml_get_error_code($parser)));
    }
}
echo $count; // 3
echo xml_parse(xml_parser_create(), "<a><b></a>", true); // 0

Na co uważać

  • Wynikiem jest liczba całkowita 1 albo 0 – === true nigdy nie byłoby prawdą.
  • Po błędzie parser nie kontynuuje; rozpoznasz go przez xml_get_error_code() i xml_get_current_line_number().

Powiązane funkcje:
xml_parser_create()
xml_get_error_code()
xml_error_string()
fread()