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

⚡ Умно обобщение

PHP и XML работят заедно, за да структурират, съхраняват и обменят данни между системите. Това ръководство обяснява XML, DOM и XML парсерите, след което показва как да се чете XML документ със SimpleXML и как да се създаде такъв с класа DOMDocument, като завършва с това кога да се използва всеки от тях.

  • 📄 Какво е XML: XML е разширяем език за маркиране (Extensible Markup Language), формат, базиран на тагове, който ви позволява да дефинирате персонализирани тагове за структуриране и транспортиране на данни.
  • 🌳 ДОМ: Моделът на обектния документ разглежда 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 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

Сега ще разгледаме как да създадете 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

Създайте 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 код, който чете точните елементи и атрибути, от които се нуждаете, включително цикли за повтарящи се записи. Тествайте го спрямо реални файлове.

Обобщете тази публикация с: