Учебное пособие по PHP XML: создание, анализ и чтение на примере
⚡ Умное резюме
PHP и XML работают вместе для структурирования, хранения и обмена данными между системами. В этом пошаговом руководстве объясняется XML, DOM и XML-парсеры, затем показывается, как читать XML-документ с помощью SimpleXML и как создавать его с помощью класса DOMDocument, и в заключение объясняется, когда следует использовать каждый из них.

Что такое XML?
XML — это аббревиатура расширяемого языка разметки.
XML используется для структурирования, хранения и передачи данных из одной системы в другую.
XML похож на HTML. Он использует открывающие и закрывающие теги. В отличие от HTML, XML позволяет пользователям определять собственные теги.
Что такое DOM?
DOM — это аббревиатура от Document Object Model.
Это кроссплатформенный и языково-нейтральный стандарт, определяющий способы доступа к данным и их обработки в следующих средах:
- HTML
- XHTML
- XML
DOM XML используется для доступа к XML-документам и управления ими. Это просматривает XML-документ в виде древовидной структуры.
XML-парсеры
XML-парсер — это программа, которая преобразует XML-документ в объект DOM (Dolatch Object Model) XML.
Затем объектом XML DOM можно манипулировать с помощью Javaсценарий, PythonPHP и другие языки.
Ключевое слово CDATA, являющееся аббревиатурой от (unparsed) Character Data (неразобранные) символьные данные, используется для игнорирования специальных символов, таких как «<» и «>», при разборе XML-документа.
Зачем использовать XML?
- Веб-сервисы, такие как SOAP и REST, используют формат XML для обмена информацией. Знание того, что такое XML и как он работает, дает разработчику конкурентное преимущество, поскольку современные приложения активно используют веб-сервисы.
- XML-документы можно использовать для хранения параметров конфигурации приложения.
- Это позволяет создавать собственные пользовательские теги, что делает систему более гибкой.
Пример XML-документа
Предположим, вы — разработчик.ping Приложение, которое получает данные из веб-сервиса в формате XML.
Ниже приведён пример того, как выглядит XML-документ.
<?xml version="1.0" encoding="utf-8"?> <employees status = "ok"> <record man_no = "101"> <name>Joe Paul</name> <position>CEO</position> </record> <record man_no = "102"> <name>Tasha Smith</name> <position>Finance Manager</position> </record> </employees>
ВОТ,
- « "Указывает версию XML и используемую кодировку."
- « » является корневым элементом.
- « … «Это дочерние элементы, по одному на каждую запись сотрудника».
Как читать XML с помощью PHP
Теперь напишем код, который будет считывать XML-документ с данными о сотрудниках и отображать результаты в веб-браузере. index.php
<?php $xml = simplexml_load_file('employees.xml'); echo '<h2>Employees Listing</h2>'; $list = $xml->record; for ($i = 0; $i < count($list); $i++) { echo '<b>Man no:</b> ' . $list[$i]->attributes()->man_no . '<br>'; echo 'Name: ' . $list[$i]->name . '<br>'; echo 'Position: ' . $list[$i]->position . '<br><br>'; } ?>
ВОТ,
- Функция “$xml = simplexml_load_file('employees.xml');” использует функцию simplexml_load_file для загрузки файла employees.xml и присвоения его содержимого переменной $xml.
- Функция “$list = $xml->record;” извлекает содержимое узлов записи.
- Цикл for ($i = 0; $i < count(…)…) считывает массив и выводит результаты.
- «$list[$i]->attributes()->man_no;» читает атрибут man_no элемента
- «$list[$i]->имя;» считывает значение дочернего элемента name
- «$list[$i]->позиция;» считывает значение дочернего элемента позиции
Тестирование XML-ридера
Предположим, вы сохранили файл index.php в папке phptuts/xml. Перейдите по указанному пути. URL http://localhost/phptuts/xml/index.php
Как создать XML-документ с помощью PHP
Теперь мы рассмотрим, как создать XML-документ с помощью PHP.
Приведённый ниже код использует встроенный в PHP класс DOMDocument для создания XML-документа.
<?php $dom = new DOMDocument(); $dom->encoding = 'utf-8'; $dom->xmlVersion = '1.0'; $dom->formatOutput = true; $xml_file_name = 'movies_list.xml'; $root = $dom->createElement('Movies'); $movie_node = $dom->createElement('movie'); $attr_movie_id = new DOMAttr('movie_id', '5467'); $movie_node->setAttributeNode($attr_movie_id); $child_node_title = $dom->createElement('Title', 'The Campaign'); $movie_node->appendChild($child_node_title); $child_node_year = $dom->createElement('Year', 2012); $movie_node->appendChild($child_node_year); $child_node_genre = $dom->createElement('Genre', 'Comedy'); $movie_node->appendChild($child_node_genre); $child_node_ratings = $dom->createElement('Ratings', 6.2); $movie_node->appendChild($child_node_ratings); $root->appendChild($movie_node); $dom->appendChild($root); $dom->save($xml_file_name); echo "$xml_file_name has been successfully created"; ?>
ВОТ,
- Функция “$dom = new DOMDocument();” создает экземпляр класса DOMDocument.
- «$dom->encoding = 'utf-8';» устанавливает кодировку документа utf-8
- «$dom->xmlVersion = '1.0';» указывает номер версии 1.0
- «$dom->formatOutput = true;» гарантирует, что вывод будет хорошо отформатирован
- «$root = $dom->createElement('Фильмы');» создает корневой узел с именем Movies
- Параметр “$attr_movie_id = new DOMAttr('movie_id', '5467');” определяет атрибут movie_id узла movie.
- Функция “$dom->createElement('ElementName', 'ElementValue')” создает дочерний узел. ElementName указывает имя элемента, например, Title. ElementValue задает значение дочернего узла, например, The Campaign.
- Команда “$root->appendChild($movie_node);” добавляет узел movie к корневому узлу Movies.
- «$dom->appendChild($root);» добавляет корневой узел к XML-документу.
- «$dom->save($xml_file_name);» сохраняет XML-файл в корневом каталоге веб-сервера.
- Команда «echo “$xml_file_name has been successfully created”;» выводит сообщение об успешном завершении.
Тестирование XML Creator
Предположим, вы сохранили файл create_movies_list.php в папке phptuts/xml. Перейдите по указанному пути. URL http://localhost/phptuts/xml/create_movies_list.php
Откройте файл movies_list.xml.
SimpleXML против DOMDocument
PHP предлагает два основных способа работы с XML. SimpleXML лучше всего подходит, когда вам в основном нужно читать данные, в то время как DOMDocument обеспечивает более тонкий контроль при создании и интенсивном редактировании документов. В таблице ниже приведено их сравнение.
| Аспект | SimpleXML | DOMДокумент |
|---|---|---|
| Простота в использовании | Всё очень просто; документ ведёт себя как вложенные объекты. | Более подробный API на основе узлов |
| лучше всего для | Чтение и несложное редактирование. | Создание документов и сложные манипуляции. |
| Стиль доступа | $xml->record->name | методы createElement() и appendChild() |
| Поддержка XPath | Да, через ->xpath() | Да, через класс DOMXPath. |
Практическое правило: для чтения лент новостей и простых файлов в первую очередь используйте SimpleXML, а DOMDocument переключайтесь на него, когда нужно создавать документы, вставлять узлы в определенные позиции или проверять соответствие схеме.



