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 –
=== truenigdy nie byłoby prawdą. - Po błędzie parser nie kontynuuje; rozpoznasz go przez
xml_get_error_code()ixml_get_current_line_number().
Powiązane funkcje:
xml_parser_create()
xml_get_error_code()
xml_error_string()
fread()