Підручник PHP XML: створення, аналіз, читання з прикладом

⚡ Розумний підсумок

PHP та XML працюють разом для структурування, зберігання та обміну даними між системами. У цьому посібнику пояснюється XML, DOM та парсери XML, потім показано, як читати XML-документ за допомогою SimpleXML та як створювати його за допомогою класу DOMDocument, а також розказано, коли використовувати кожен з них.

  • 📄 Що таке XML: XML — це розширювана мова розмітки, формат на основі тегів, який дозволяє визначати власні теги для структурування та передачі даних.
  • ???? DOM: Об'єктна модель документа розглядає XML- або HTML-документ як дерево, тому код може переміщатися між вузлами та редагувати їх.
  • 🔄 XML-парсери: Парсер перетворює XML-документ на DOM-об'єкт, який PHP, JavaСценарій, або Python можна читати та змінювати.
  • ???? Читання XML: simplexml_load_file завантажує файл в об'єкти, тож ви отримуєте доступ до записів за допомогою синтаксису стрілок, наприклад, $xml->record->name.
  • 🛠️ Створення XML: Клас DOMDocument створює документ вузол за вузлом за допомогою createElement та appendChild, а потім save записує файл.
  • 🇧🇷 SimpleXML проти DOM: SimpleXML швидко читається, тоді як DOMDocument підходить для точного створення та складних маніпуляцій.
  • 🤖 AI Assist: Інструменти штучного інтелекту можуть генерувати код парсингу для певної структури XML та конвертувати масиви XML, JSON та PHP між ними.

PHP та XML

Що таке XML?

XML — це абревіатура від Extensible Markup Language.

XML використовується для структурування, зберігання та передачі даних з однієї системи в іншу.

XML схожий на HTML. Він використовує відкриваючі та закриваючі теги. На відміну від HTML, XML дозволяє користувачам визначати власні теги.

Що таке DOM?

DOM - це абревіатура від Document Object Model.

Це кросплатформний та мовно-нейтральний стандарт, який визначає, як отримувати доступ до даних та маніпулювати ними в:

  • HTML
  • XHTML
  • XML

DOM XML використовується для доступу та керування XML-документами. Це переглядає документ XML як деревоподібна структура.

Синтаксичні аналізатори XML

XML-парсер — це програма, яка перетворює XML-документ на об'єкт моделі об'єктів XML-документів (DOM).

Потім об'єкт XML DOM можна маніпулювати за допомогою Javaсценарій, Python, PHP та інші мови програмування.

Ключове слово 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(…)…» – це цикл for, який зчитує масив і виводить результати
  • “$list[$i]->attributes()->man_no;” читає атрибут man_no елемента
  • «$list[$i]->name;» читає значення дочірнього елемента name
  • “$list[$i]->position;” читає значення дочірнього елемента position

Тестування зчитувача 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 вузла фільму
  • «$dom->createElement('ElementName', 'ElementValue')» створює дочірній вузол. ElementName визначає назву елемента, наприклад, Title. ElementValue встановлює значення дочірнього вузла, наприклад, The Campaign.
  • «$root->appendChild($movie_node);» додає вузол фільму до кореневого вузла Фільми
  • “$dom->appendChild($root);” додає кореневий вузол до документа XML.
  • “$dom->save($xml_file_name);” зберігає XML-файл у кореневому каталозі веб-сервера.
  • «echo «$xml_file_name успішно створено»;» відображає повідомлення про успішне створення.

Тестування 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->запис->ім'я createElement() та appendChild()
Підтримка XPath Так, через ->xpath() Так, через клас DOMXPath

Практичне правило полягає в тому, щоб спочатку використовувати SimpleXML для читання каналів та простих файлів, а потім переходити до DOMDocument, коли потрібно створювати документи, вставляти вузли в певні позиції або перевіряти відповідність схемі.

Поширені запитання

Обидва зберігають структуровані дані, але 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, який зчитує саме ті елементи та атрибути, які вам потрібні, включаючи цикли для повторюваних записів. Перевірте це на реальних файлах.

Підсумуйте цей пост за допомогою: