PHP Учебник

PHP Старт Введение в PHP Установка PHP Синтаксис PHP Комментарии в PHP Переменные PHP PHP Echo / Print Типы данных PHP Строки PHP Числа PHP Математика в PHP Константы PHP Операторы PHP PHP If...Else...Elseif PHP Switch Циклы в PHP Функции PHP Массивы PHP PHP Суперглобальные PHP RegEx

PHP Формы

Обработка форм PHP Валидация форм PHP Обязательные поля Валидация URL/E-mail Полная форма PHP

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

PHP Дата и время PHP Include/Require PHP Работа с файлами Открытие/Чтение файлов Создание/Запись файлов PHP Загрузка файлов Файлы cookie PHP Сессии PHP Фильтры PHP Расширенные фильтры PHP Функция Callback PHP JSON PHP Исключения

PHP OOP

Что такое ООП в PHP Классы/Объекты PHP Цепочки методов PHP Конструктор PHP Деструктор PHP Модификаторы доступа Наследование в PHP Константы класса PHP Подсказка типов PHP Подсказка интерфейсов Абстрактные классы PHP PHP Интерфейсы PHP Полиформизм PHP Трейты Статические методы PHP Статические свойства PHP Пространства имен PHP Итерируемые объекты

База данных MySQL

База данных MySQL Подключение к MySQL Создание БД MySQL Создание таблицы MySQL Вставка данных MySQL Получить ID MySQL Подготовленные операторы PHP MySQL Получение данных MySQL Предложение WHERE Предложение ORDER BY Обновление данных MySQL Удаление данных БД MySQL Limit Data

PHP XML

Парсеры PHP XML Парсер PHP SimpleXML Получить PHP SimpleXML PHP XML Expat PHP XML DOM

PHP - AJAX

AJAX Введение AJAX PHP AJAX База Данных AJAX XML AJAX Живой поиск AJAX Опрос

PHP Примеры

PHP Примеры Практика ООП PHP PHP квиз-тест Упражнения Базовый PHP Упражнения Алгоритмы Упражнения Массивы Упражнения Цикл for Упражнения Функции Регулярные выражения Упражнения Дата PHP Упражнения Строки PHP Математика PHP Упражнения Формы PHP Упражнения Классы PHP Упражнения JSON PHP PHP Задачник


Парсер PHP XML DOM




Библиотека PHP DOM позволяет вам управлять HTML и XML после загрузки вашего скрипта в новый PHP DOMDocument. Синтаксический анализ - важная концепция, относящаяся к преобразованию исходного кода в более удобный для чтения формат.

Для чтения и изменения HTML и XML лучше всего подходит библиотека DOM, поскольку она автоматически создается вместе с некоторыми версиями PHP.


Парсер Dom очень хорошо справляется как с XML, так и с HTML-документами. Парсер XML DOM является встроенным в PHP.

DOM - это анализатор на основе дерева (в отличие от анализаторов XML на основе событий).

Парсер Dom перемещается на основе дерева, а перед доступом к данным он загружает данные в объект dom и обновляет данные в веб-браузере.

Чтобы понять, как DOM просматривает XML-данные, давайте проанализируем следующий пример кода:

$my_data = 
"<?xml version='1.0' encoding='UTF-8'?>
<from>Me</from>

Данные XML, с точки зрения DOM, имеют древовидную структуру:

  • Сам XML-документ относится к уровню 1.
  • Корневой элемент <from> относится к уровня 2.
  • Текстовый элемент Me - это уровень 3.

Следующие свойства могут помочь вам найти информацию о вашем XML-документе:

Свойство Описание
actualEncoding Не рекомендуется. Это свойство только для чтения, представляющее кодировку документа.
config Не рекомендуется. Когда вызывается DOMDocument :: normalizeDocument (), применяется это свойство конфигурации.
doctype Представляет объявление типа документа, связанное с документом.
documentElement Предоставляет прямой доступ к дочерним узлам в документе.
documentURI Представляет расположение документа. Возвращает NULL, если местоположение не найдено.
encoding Представляет кодировку документа, указанную в объявлении XML.
formatOutput Помогает организовать вывод с необходимыми пробелами и отступами.
implementation Представляет объект DOMImplementation, который управляет документом.
preserveWhiteSpace Указывает не удалять лишние пробелы.
recover Собственный. Включает режим восстановления. Этот атрибут взят не из документации DOM, а из libxml.
resolveExternals Если установлено значение TRUE, этот атрибут загружает внешние сущности из объявления doctype. Это удобно для добавления символов в документы XML.
standalone Не рекомендуется. Указывает, является ли документ автономным. То же, что xmlStandalone.
strictErrorChecking Отображает DOMException при обнаружении ошибок.
replaceEntities Собственный. Указывает, следует ли заменять объекты. Он не является частью спецификации DOM и является уникальным для libxml.
validateOnParse Используется для загрузки и проверки на соответствие DTD.
version Не рекомендуется. Представляет версию XML. То же, что и xmlVersion.
xmlEncoding Указывает кодировку XML-документа. NULL, если кодировка не найдена.
xmlStandalone Указывает, является ли XML-документ автономным. FALSE, если эта информация не найдена.
xmlVersion Указывает номер версии XML-документа. Если объявление не найдено, но документ поддерживает XML, версия 1.0.

Приведенный ниже XML-файл file.xml будет использоваться в нашем примере:

<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>You</to>
  <from>Me</from>
  <heading>The Game</heading>
  <body>You lost it.</body>
</note>

Ниже приведен сценарий, который нам нужно будет использовать для инициализации анализатора XML:

<?php
  $xml_doc = new DOMDocument();
  $xml_doc->load('file.xml');

  print $xml_doc->saveXML();
?>

Результат выполнения кода:

Me You The Game You lost it.

Вот шаги этого примера кода:

  1. Мы создаем новый документ XML DOM.
  2. Затем мы используем функцию load для загрузки данных XML в объект.
  3. И, наконец, мы печатаем информацию из созданного нами XML DOMDocument.

Примечание: Используя функцию saveXML(), мы помещаем внутренние данные XML в строку данных. После этого он будет готов к отображению.

Если вы выберете в окне браузера «Просмотр исходного кода», то увидите следующий HTML-код:

<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>You</to>
  <from>Me</from>
  <heading>The Game</heading>
  <body>You lost it.</body>
</note>

В приведенном выше примере создается объект DOMDocument и загружается в него XML из файла note.xml.

Затем функция saveXML() помещает внутренний XML-документ в строку, чтобы мы могли его вывести.

Чтобы инициализировать синтаксический анализатор PHP XML, получить доступ к данным и затем выполнить итерацию, вы должны применить цикл foreach:

<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("file.xml");

$x = $xmlDoc->documentElement;
foreach ($x->childNodes AS $item) {
  print $item->nodeName . " = " . $item->nodeValue . "<br>";
}
?>

В этом примере кода выполняются те же шаги: создается новый документ XML DOM, содержащий данные из файла file.xml. Затем мы подаем заявку foreach на печать nodeName и nodeValue.

Вот результат, который мы получаем в таком случае:

#text =
from = Me
#text =
to = You
#text =
heading = The Game
#text =
body = You lost it
#text =

Примечание: Обратите внимание, что в нашем примере между каждым элементом есть пустые текстовые узлы. Когда создается XML, он часто содержит пробелы между узлами. Парсер XML DOM рассматривает их как обычные элементы, и если вы о них не знаете, они иногда вызывают проблемы.

Давайте научимся создавать PHP DOMDocuments для изменения HTML-скрипта. В следующем примере кода показано, как создать документ PHP DOMDocument, содержащий HTML:

<?php
$doc = new DOMDocument();
$doc->loadHTML("<html><body>Example<br></body></html>");
echo $doc->saveHTML();
?>
  • Используя библиотеку DOM, вы можете обрабатывать как XML-документы так и HTML.
  • DOM (Document Object Model) означает объектная модель документа и относится к древовидным анализаторам XML. Этот метод позволяет вам производить любые операции с XML-данными в очень удобной форме - представляя XML-документ как дерево объектов.
  • Функции парсера DOM являются частью ядра PHP. Для использования этих функций установка не требуется.
  • Способы использования API-интерфейса DOM зависят от поставленных целей, но чаще всего требуется выполнить описанные ниже действия:
    1. Открыть новый документ DOM XML или прочитать его, поместив в оперативную память.
    2. Выполнить манипуляции с документом на уровне узлов.
    3. Вывести результирующий документ XML в виде строки или записать его в файл. Эта операция приводит также к освобождению памяти, используемой синтаксическим анализатором.