Samouczek PHP XML: tworzenie, analizowanie, czytanie z przykładem

⚡ Inteligentne podsumowanie

PHP i XML współpracują ze sobą, aby strukturyzować, przechowywać i wymieniać dane między systemami. W tym przewodniku wyjaśniono XML, DOM i parsery XML, a następnie pokazano, jak odczytać dokument XML za pomocą SimpleXML i jak go utworzyć za pomocą klasy DOMDocument, kończąc na tym, kiedy używać każdego z nich.

  • 📄 Czym jest XML: XML (Extensible Markup Language) to format oparty na tagach, który umożliwia definiowanie niestandardowych tagów w celu strukturyzowania i przesyłania danych.
  • 🌳 DOM: Model obiektów dokumentu (Document Object Model) traktuje dokument XML lub HTML jako drzewo, dzięki czemu kod może nawigować po węzłach i je edytować.
  • 🔄 Parsery XML: Parser konwertuje dokument XML na obiekt DOM, który PHP, JavaSkrypt lub Python Potrafi czytać i zmieniać.
  • ???? Odczytywanie XML: simplexml_load_file ładuje plik do obiektów, dzięki czemu dostęp do rekordów można uzyskać za pomocą składni strzałek, takiej jak $xml->record->name.
  • 🛠️. Tworzenie XML: Klasa DOMDocument buduje węzeł dokumentu po węźle za pomocą createElement i appendChild, a następnie zapisuje plik.
  • ⚖️. SimpleXML kontra DOM: SimpleXML jest szybki do odczytania, natomiast DOMDocument nadaje się do precyzyjnego tworzenia i złożonej obróbki.
  • 🤖 Asystent AI: Narzędzia sztucznej inteligencji potrafią generować kod parsujący dla konkretnej struktury XML i konwertować ją między tablicami XML, JSON i PHP.

PHP i XML

Co to jest XML?

XML to skrót od Extensible Markup Language.

XML służy do strukturyzowania, przechowywania i przesyłania danych pomiędzy systemami.

XML jest podobny do HTML. Używa znaczników otwierających i zamykających. W przeciwieństwie do HTML, XML pozwala użytkownikom definiować własne znaczniki.

Co to jest DOM?

DOM to skrót od Document Object Model.

Jest to wieloplatformowy i niezależny językowo standard, który definiuje sposób dostępu do danych i manipulowania nimi w:

  • HTML
  • XHTML
  • XML

DOM XML służy do uzyskiwania dostępu do dokumentów XML i manipulowania nimi. To przegląda dokument XML jako struktura drzewa.

Parsery XML

Parser XML to program, który tłumaczy dokument XML na obiekt modelu DOM (Document Object Model) XML.

Obiektem XML DOM można następnie manipulować za pomocą Javascenariusz, Python, PHP i inne języki.

Słowo kluczowe CDATA, będące akronimem (nieprzetworzone) dane znakowe, służy do ignorowania znaków specjalnych, takich jak „<” i „>” podczas parsowania dokumentu XML.

Dlaczego warto używać XML-a?

  • Usługi sieciowe, takie jak SOAP i REST, wykorzystują format XML do wymiany informacji. Poznanie XML i jego działania daje przewagę konkurencyjną jako programista, ponieważ nowoczesne aplikacje intensywnie korzystają z usług sieciowych.
  • Dokumenty XML można wykorzystać do przechowywania ustawień konfiguracyjnych aplikacji.
  • Umożliwia tworzenie własnych, niestandardowych tagów, co czyni je bardziej elastycznymi.

Przykład dokumentu XML

Załóżmy, że jesteś rozwijanyping aplikacja pobierająca dane z usługi sieciowej w formacie XML.

Poniżej znajduje się przykład wyglądu dokumentu 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>

TUTAJ,

  • „ „określa wersję XML i kodowanie, które mają być używane
  • „ ” jest elementem głównym.
  • „ … „są elementami podrzędnymi, po jednym na rekord pracownika.

Jak czytać XML za pomocą PHP

Napiszmy teraz kod, który będzie odczytywał dokument XML pracowników i wyświetlał wyniki w przeglądarce internetowej. 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>';
}
?>

TUTAJ,

  • “$xml = simplexml_load_file('employees.xml');” używa funkcji simplexml_load_file do załadowania pliku o nazwie employees.xml i przypisania zawartości do zmiennej $xml.
  • “$list = $xml->record;” pobiera zawartość węzłów rekordów.
  • „for ($i = 0; $i < count(…)…” to pętla for, która odczytuje tablicę i wyprowadza wyniki
  • „$list[$i]->atrybuty()->man_no;” odczytuje atrybut man_no elementu
  • „$lista[$i]->nazwa;” odczytuje wartość elementu podrzędnego name
  • „$lista[$i]->pozycja;” odczytuje wartość elementu podrzędnego pozycji

Testowanie czytnika XML

Zakładając, że zapisałeś plik index.php w folderze phptuts/xml, przejdź do URL http://localhost/phptuts/xml/index.php

Czytaj XML za pomocą PHP

Jak utworzyć dokument XML za pomocą PHP

Przyjrzymy się teraz, jak utworzyć dokument XML za pomocą PHP.

Poniższy kod wykorzystuje wbudowaną klasę PHP DOMDocument w celu utworzenia dokumentu 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";
?>

TUTAJ,

  • “$dom = new DOMDocument();” tworzy instancję klasy DOMDocument.
  • „$dom->kodowanie = 'utf-8';” ustawia kodowanie dokumentu na utf-8
  • „$dom->xmlVersion = '1.0';” określa numer wersji 1.0
  • „$dom->formatOutput = true;” gwarantuje, że dane wyjściowe są dobrze sformatowane
  • „$root = $dom->createElement('Filmy');” tworzy węzeł główny o nazwie Filmy
  • „$attr_movie_id = new DOMAttr('movie_id', '5467');” definiuje atrybut movie_id węzła filmu
  • „$dom->createElement('ElementName', 'ElementValue')” tworzy węzeł podrzędny. ElementName określa nazwę elementu, np. Title. ElementValue ustawia wartość węzła podrzędnego, np. The Campaign.
  • „$root->appendChild($movie_node);” dodaje węzeł filmu do węzła głównego Filmy
  • „$dom->appendChild($root);” dołącza węzeł główny do dokumentu XML.
  • „$dom->zapisz($xml_file_name);” zapisuje plik XML w katalogu głównym serwera WWW.
  • „echo „$xml_file_name został pomyślnie utworzony”;” wyświetla komunikat o powodzeniu.

Testowanie XML Creator

Zakładając, że zapisałeś plik create_movies_list.php w folderze phptuts/xml, przejdź do URL http://localhost/phptuts/xml/create_movies_list.php

Utwórz dokument XML za pomocą PHP

Otwórz plik movies_list.xml.

Utwórz dokument XML za pomocą PHP

SimpleXML kontra DOMDocument

PHP oferuje dwa główne sposoby pracy z XML. SimpleXML sprawdza się najlepiej, gdy potrzebujesz głównie odczytywać dane, natomiast DOMDocument zapewnia lepszą kontrolę przy tworzeniu i intensywnej edycji dokumentów. Poniższa tabela porównuje te metody.

WYGLĄD SimpleXML DOMDocument
Łatwość użycia Bardzo proste; dokument zachowuje się jak zagnieżdżone obiekty Bardziej szczegółowe API oparte na węzłach
Najlepszy dla Czytanie i lekka edycja Tworzenie dokumentów i złożona manipulacja
Styl dostępu $xml->record->name createElement() i appendChild()
Wsparcie XPath Tak, poprzez ->xpath() Tak, poprzez klasę DOMXPath

Praktyczną zasadą jest sięganie w pierwszej kolejności do SimpleXML w celu odczytu kanałów i prostych plików, a następnie przejście na DOMDocument, gdy zachodzi potrzeba utworzenia dokumentów, wstawienia węzłów w określonych miejscach lub sprawdzenia zgodności ze schematem.

FAQ

Oba przechowują ustrukturyzowane dane, ale XML używa tagów i obsługuje atrybuty, komentarze i schematy, podczas gdy JSON jest lżejszy i mapuje bezpośrednio na tablice i obiekty. JSON jest powszechny w interfejsach API; XML nadaje się do dokumentów i konfiguracji.

Załaduj plik za pomocą SimpleXML lub DOMDocument, zmień wartości lub atrybuty węzła, a następnie zapisz je z powrotem. W przypadku SimpleXML edytuj właściwość i wywołaj asXML('file.xml'); w przypadku DOMDocument edytuj węzeł i wywołaj save().

XPath to język zapytań służący do wybierania węzłów w dokumencie XML. W PHP wywołaj $xml->xpath('//record/name') z SimpleXML lub użyj klasy DOMXPath, aby pobrać pasujące elementy bez konieczności wyszukiwania.ping przez całe drzewo.

Tak. Sztuczna inteligencja może generować kod za pomocą simplexml_load_string, json_encode i json_decode do konwersji między formatami oraz oznaczać dane, które nie są poprawnie mapowane, takie jak atrybuty XML lub zawartość mieszana. Sprawdź wynik.

Tak. Wklej próbkę swojego XML-a, a AI wygeneruje kod SimpleXML lub DOMDocument, który odczyta dokładnie te elementy i atrybuty, których potrzebujesz, w tym pętle dla powtarzających się rekordów. Przetestuj go na prawdziwych plikach.

Podsumuj ten post następująco: