Учебное пособие по PHP XML: создание, анализ и чтение на примере

⚡ Умное резюме

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

  • 📄 Что такое XML: XML — это расширяемый язык разметки (Extensible Markup Language), формат на основе тегов, позволяющий определять пользовательские теги для структурирования и передачи данных.
  • ???? DOM: Объектная модель документа рассматривает XML- или HTML-документ как дерево, что позволяет коду перемещаться по узлам и редактировать их.
  • 🔄 XML-парсеры: Парсер преобразует XML-документ в DOM-объект, который PHP может использовать. JavaСценарий, или Python умеет читать и менять.
  • ???? Чтение XML: Функция simplexml_load_file загружает файл в объекты, поэтому доступ к записям осуществляется с помощью стрелочного синтаксиса, например, $xml->record->name.
  • 🇧🇷 Создание XML: Класс DOMDocument создает узел документа по одному с помощью методов createElement и appendChild, а затем сохраняет файл.
  • SimpleXML против DOM: SimpleXML быстро читается, в то время как DOMDocument подходит для точного создания и сложных манипуляций.
  • 🤖 AI-помощь: Инструменты искусственного интеллекта могут генерировать код для парсинга определенной XML-структуры и преобразовывать данные между форматами XML, JSON и PHP-массивами.

PHP и XML

Что такое 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

Теперь мы рассмотрим, как создать 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

Создайте XML-документ с помощью PHP

Откройте файл movies_list.xml.

Создайте XML-документ с помощью PHP

SimpleXML против DOMDocument

PHP предлагает два основных способа работы с XML. SimpleXML лучше всего подходит, когда вам в основном нужно читать данные, в то время как DOMDocument обеспечивает более тонкий контроль при создании и интенсивном редактировании документов. В таблице ниже приведено их сравнение.

Аспект SimpleXML DOMДокумент
Простота в использовании Всё очень просто; документ ведёт себя как вложенные объекты. Более подробный API на основе узлов
лучше всего для Чтение и несложное редактирование. Создание документов и сложные манипуляции.
Стиль доступа $xml->record->name методы createElement() и appendChild()
Поддержка XPath Да, через ->xpath() Да, через класс DOMXPath.

Практическое правило: для чтения лент новостей и простых файлов в первую очередь используйте SimpleXML, а DOMDocument переключайтесь на него, когда нужно создавать документы, вставлять узлы в определенные позиции или проверять соответствие схеме.

Часто задаваемые вопросы (FAQ)

Оба формата хранят структурированные данные, но XML использует теги и поддерживает атрибуты, комментарии и схемы, в то время как JSON легче и напрямую сопоставляется с массивами и объектами. JSON широко используется для API; XML подходит для документов и конфигурации.

Загрузите файл с помощью SimpleXML или DOMDocument, измените значения или атрибуты узлов, а затем запишите их обратно. В SimpleXML отредактируйте свойство и вызовите asXML('file.xml'); в DOMDocument отредактируйте узел и вызовите save().

XPath — это язык запросов для выбора узлов в XML-документе. В PHP вызовите `$xml->xpath('//record/name')` с помощью SimpleXML или используйте класс `DOMXPath`, чтобы получить соответствующие элементы без поиска.ping по всему дереву.

Да. Искусственный интеллект может генерировать код с использованием функций simplexml_load_string, json_encode и json_decode для преобразования между форматами и помечать данные, которые не соответствуют заданным параметрам, например, XML-атрибуты или смешанное содержимое. Проверьте результат.

Да. Вставьте пример вашего XML-файла, и ИИ сможет сгенерировать код SimpleXML или DOMDocument, который считывает именно те элементы и атрибуты, которые вам нужны, включая циклы для повторяющихся записей. Протестируйте его на реальных файлах.

Подведем итог этой публикации следующим образом: