Підручник PHP XML: створення, аналіз, читання з прикладом
⚡ Розумний підсумок
PHP та XML працюють разом для структурування, зберігання та обміну даними між системами. У цьому посібнику пояснюється XML, DOM та парсери XML, потім показано, як читати XML-документ за допомогою SimpleXML та як створювати його за допомогою класу DOMDocument, а також розказано, коли використовувати кожен з них.
Що таке 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.
Наведений нижче код використовує вбудований клас 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
Відкрийте файл movies_list.xml.
SimpleXML проти DOMDocument
PHP пропонує два основні способи роботи з XML. SimpleXML найкраще підходить, коли вам потрібно переважно читати дані, тоді як DOMDocument надає точніший контроль для створення та інтенсивного редагування документів. У таблиці нижче наведено їх порівняння.
| Аспект | SimpleXML | DOMДокумент |
|---|---|---|
| Простота використання | Дуже просто; документ поводиться як вкладені об'єкти | Більш детальний API на основі вузлів |
| Найкраще для | Читання та легке редагування | Створення документів та складні маніпуляції |
| Стиль доступу | $xml->запис->ім'я | createElement() та appendChild() |
| Підтримка XPath | Так, через ->xpath() | Так, через клас DOMXPath |
Практичне правило полягає в тому, щоб спочатку використовувати SimpleXML для читання каналів та простих файлів, а потім переходити до DOMDocument, коли потрібно створювати документи, вставляти вузли в певні позиції або перевіряти відповідність схемі.




