Підручник 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-документа
Припустімо, ви розробляєте програму, яка отримує дані з веб-служби у форматі 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, щоб завантажити ім’я файлу zaposlenih.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
Тестуємо наш додаток
Якщо ви зберегли файл index.php у папці phptus/xml, перейдіть до URL-адреси http://localhost/phptuts/xml/index.php
Як створити документ XML за допомогою PHP
Зараз ми розглянемо, як створити документ XML за допомогою PHP.
Ми використаємо наведений вище приклад у діаграмі дерева DOM.
Наступний код використовує 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', 'The Campaign'); $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 = новий DOMDocument();» створює екземпляр класу DOMDocument.
- “$dom->encoding = 'utf-8';” встановлює кодування документа на utf-8
- “$dom->xmlVersion = '1.0';” вказує номер версії 1.0
- “$dom->formatOutput = true;” гарантує, що вихідні дані добре відформатовані
- “$root = $dom->createElement('Фільми');” створює кореневий вузол під назвою Movies
- “$attr_movie_id = новий DOMAttr('movie_id', '5467');” визначає атрибут ідентифікатора фільму вузла Фільми
- “$child_node_element_name = $dom->createElement('ElementName', 'ElementValue')” створює дочірній вузол вузла Movies. ElementName визначає назву елемента, наприклад Title. ElementValue встановлює значення дочірнього вузла, наприклад, The Campaign.
- «$root->appendChild($movie_node);» додає елементи movie_node до кореневого вузла Movies
- “$dom->appendChild($root);” додає кореневий вузол до документа XML.
- “$dom->save($xml_file_name);” зберігає XML-файл у кореневому каталозі веб-сервера.
- «відлуння ». $xml_file_name . « було успішно створено»;» створює посилання на файл XML.
Тестуємо наш додаток
Якщо ви зберегли файл create_movies_list у папці phptuts/xml, перейдіть до URL-адреси http://localhost/phptuts/xml/create_movies_list.php
Натисніть посилання movies_list_xml
Підсумки
- XML це абревіатура від Extensible Markup Language
- XML можна використовувати для обміну інформацією між системами або збереження параметрів конфігурації програми тощо.
- DOM - це абревіатура від Document Object Model. XML DOM розглядає XML-документ як деревовидну структуру
- Синтаксичний аналізатор XML — це програма, яка перетворює XML-документ XML у структуру дерева DOM, подібну до документа.
- CDATA використовується для ігнорування спеціальних символів під час аналізу документів XML.
- PHP використовує simplexml_load_file для читання документів XML і повернення результатів у вигляді числового масиву
- Клас PHP DOMDocument для створення файлів XML.