Меню
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON PHP КАК
     ❯   

PHP Учебник


PHP Формы


PHP Продвинутый


PHP ООП


MySQL База данных


PHP XML


PHP - AJAX


PHP Примеры


PHP Справочник



PHP - XML Expat Парсер



Парсер XML Expat в PHP

XML Expat — это событийный парсер, который рассматривает XML-документ как последовательность событий. Когда происходит событие, он вызывает указанную функцию для его обработки.

XML Expat также является невалидирующим парсером и игнорирует любые DTD, связанные с документом. Однако, если документ сформирован неправильно, он завершится сообщением об ошибке.

Поскольку он является событийным, невалидирующим парсером, парсер XML Expat быстр и хорошо подходит для веб-приложений.

Посмотрите на следующий фрагмент XML:

<from>Татьяна</from>

Событийный парсер сообщает о приведенном выше XML как о последовательности из 3 событий:

  • Начальный элемент: from
  • Раздел CDATA: Татьяна
  • Конечный элемент: from

Совет: Парсер XML Expat является частью ядра PHP. Установка не требуется!


Парсер XML Expat в PHP - Основные функции

Основные функции парсера XML Expat:

  • xml_parser_create() - Инициализирует XML-парсер
  • xml_set_element_handler() - Указывает, какую функцию выполнять для открывающих и закрывающих тегов
  • xml_set_character_data_handler() - Указывает, какую функцию выполнять для символьных данных
  • xml_parse() - Запускает процесс синтаксического анализа
  • xml_error_string() - Преобразует XML-ошибку в текстовое описание
  • xml_parser_free() - Освобождает выделенную память


Использование парсера XML Expat

XML-файл "note.xml" будет использован в примере ниже.

В следующем примере мы определяем некоторые функции-обработчики, открываем XML-файл, инициализируем парсер XML Expat, а затем выполняем синтаксический анализ XML-файла:

Пример

<?php
// Определяем функции-обработчики
function start($parser, $element_name, $element_attrs) {
  switch($element_name) {
    case "NOTE":
      echo "-- Заметка --<br>";
      break;
    case "TO":
      echo "Кому: ";
      break;
    case "FROM":
      echo "От: ";
      break;
    case "HEADING":
      echo "Заголовок: ";
      break;
    case "BODY":
      echo "Сообщение: ";
  }
}
function stop($parser, $element_name) {
  echo "<br>";
}
function char($parser, $data) {
  echo $data;
}

// Открываем XML-файл для чтения
$stream = fopen("note.xml", "r");

// Инициализируем XML-парсер
$parser = xml_parser_create();

// Устанавливаем обработчики
xml_set_element_handler($parser, "start", "stop");
xml_set_character_data_handler($parser, "char");

// Читаем данные
while ($data = fread($stream, 4096)) {
  xml_parse($parser, $data, feof($stream)) or die (sprintf("XML Ошибка: %s в строке %d",
  xml_error_string(xml_get_error_code($parser)),
  xml_get_current_line_number($parser)));
}

// Освобождаем ресурс XML-парсера
xml_parser_free($parser);

// Закрываем XML-файл
fclose($stream);
?>
Попробуйте сами »

Результатом выполнения приведенного выше кода будет:

-- Заметка --
Кому: Андрей
От: Татьяна
Заголовок: Напоминание
Сообщение: Не забывай меня в эти выходные!

Пояснение к коду

  1. Создаем функции-обработчики (start(), stop() и char())
  2. Открываем XML-файл для чтения с помощью функции fopen()
  3. Инициализируем XML-парсер с помощью функции xml_parser_create()
  4. Устанавливаем обработчики: xml_set_element_handler() указывает, какую функцию выполнять для открывающих и закрывающих тегов, а xml_set_character_data_handler() указывает, какую функцию выполнять для символьных данных
  5. Выполняем синтаксический анализ XML-файла с помощью функции xml_parse()
  6. В случае ошибки добавляем функцию xml_error_string() для преобразования XML-ошибки в текстовое описание
  7. Освобождаем ресурс XML-парсера с помощью функции xml_parser_free()
  8. Закрываем XML-файл с помощью функции fclose()

Справочник парсера XML Expat в PHP

Для получения полного справочника функций парсера XML Expat посетите страницу Справочник парсера XML Expat в PHP.



×

Связаться с отделом продаж

Если вы хотите использовать услуги schoolsw3 как образовательное учреждение, команда или предприятие, отправьте нам электронное письмо:
sales@schoolsw3.com

Сообщить об ошибке

Если вы хотите сообщить об ошибке или внести предложение, отправьте нам электронное письмо:
help@schoolsw3.com

Schoolsw3 оптимизирован для обучения и подготовки. Примеры могут быть упрощены для улучшения чтения и обучения. Учебники, ссылки и примеры постоянно проверяются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего контента.
При использовании Schoolsw3 вы соглашаетесь прочитать и принять наши условия использования,
политику использования файлов cookie и конфиденциальности.

Авторское право 1999- © Copyright. Все права защищены. Schoolsw3 работает на SW3.CSS.