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 Document Object Model (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;“ чете стойността на дъщерния елемент позиция
Тестване на 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 е успешно създаден“;“ показва съобщение за успех.
Тестване на 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, когато трябва да създавате документи, да вмъквате възли на определени позиции или да валидирате спрямо схема.



