PHP XML Expat Парсер
Вбудований XML Expat парсер дає змогу обробляти XML-документи в PHP.
XML Expat Парсер
Синтаксичний аналізатор Expat – це аналізатор на основі подій.
Погляньте на наступну частину XML:
<from>Jani</from>
Синтаксичний аналізатор, заснований на подіях, повідомляє XML вище як серію з трьох подій:
- Стартовий елемент: from
- Старт розділу CDATA, значення: Jani
- Закрити елемент: from
Функції XML Expat Parser є частиною ядра PHP. Для використання цих функцій не потрібна установка.
XML файл
XML файл "note.xml" буде використовуватись в прикладі нижче:
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Не забудь мене поцілувати в ці вихідні!</body>
</note>
Ініціалізація XML Expat Парсера
Ми хочемо ініціалізувати XML Expat Parser у PHP, визначити деякі обробники для різних подій XML, а потім проаналізувати файл XML.
Приклад
<?php
// Ініціалізуйте XML парсер
$parser=xml_parser_create();
// Функція для використання на початку елемента
function start($parser,$element_name,$element_attrs) {
switch($element_name) {
case "NOTE":
echo "-- Note --<br>";
break;
case "TO":
echo "To: ";
break;
case "FROM":
echo "From: ";
break;
case "HEADING":
echo "Heading: ";
break;
case "BODY":
echo "Message: ";
}
}
// Функція для використання в кінці елемента
function stop($parser,$element_name) {
echo "<br>";
}
// Функція для використання під час пошуку символьних даних
function char($parser,$data) {
echo $data;
}
// Вкажіть обробник елемента
xml_set_element_handler($parser,"start","stop");
// Вкажіть обробника даних
xml_set_character_data_handler($parser,"char");
// Відкрити XML файл
$fp=fopen("note.xml","r");
// Читати дані
while ($data=fread($fp,4096)) {
xml_parse($parser,$data,feof($fp)) or
die (sprintf("XML Error: %s на лінії %d",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}
// Звільніть аналізатор XML
xml_parser_free($parser);
?>
Виконати приклад »
Пояснення прикладу:
- Ініціалізуйте XML парсер за допомогою функції
xml_parser_create()
- Створіть функції для використання з різними обробниками подій
- Додайте функцію
xml_set_element_handler()
, щоб указати, яка функція буде виконана, коли синтаксичний аналізатор зустріне відкриваючі та закриваючі теги - Додайте функцію
xml_set_character_data_handler()
, щоб указати, яка функція виконуватиметься, коли аналізатор зустрічатиме символьні дані - Проаналізуйте файл "note.xml" за допомогою функції
xml_parse()
- У разі помилки додайте функцію
xml_error_string()
, щоб перетворити помилку XML у текстовий опис - Викличте функцію
xml_parser_free()
, щоб звільнити пам’ять, виділену функцієюxml_parser_create()
Більше про PHP XML Expat Парсер
Для отримання додаткової інформації про функції PHP Expat відвідайте Довідник PHP XML Парсер на нашому сайті W3Schools українською.