Samouczek PHP XML: tworzenie, analizowanie, czytanie z przykładem
Co to jest XML?
XML to skrót od Extensible Markup Language.
XML służy do strukturyzowania, przechowywania i transportu danych z jednego systemu do drugiego.
XML jest podobny do HTML.
Wykorzystuje znaczniki otwierające i zamykające.
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 neutralny językowo standard, który definiuje sposób uzyskiwania dostępu do danych i manipulowania nimi;
- 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 drzewiasta.
Parsery XML
Parser XML to program, który tłumaczy dokument XML na obiekt XML Document Object Model (DOM).
Obiektem XML DOM można następnie manipulować za pomocą Javascenariusz, Pythoni PHP itp.
Słowo kluczowe CDATA, które jest akronimem dla (nieparsowanych) danych znakowych, służy do ignorowania znaków specjalnych, takich jak „<,>” podczas analizowania dokumentu XML.
Dlaczego warto używać XML-a?
- Usługi internetowe, takie jak SOAP i REST, do wymiany informacji używają formatu XML. Dowiedzenie się, czym jest XML i jak działa, zapewni ci przewagę konkurencyjną jako programisty, ponieważ nowoczesne aplikacje w dużym stopniu korzystają z usług sieciowych.
- Dokumenty XML mogą służyć do przechowywania ustawień konfiguracyjnych aplikacji
- Umożliwia tworzenie własnych, niestandardowych tagów, co czyni go bardziej elastycznym.
Przykład dokumentu XML
Załóżmy, że tworzysz aplikację pobierającą dane z usługi internetowej w formacie XML.
Poniżej znajduje się przykładowy wygląd 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, która ma być używana i kodowanie
- „ ” jest elementem głównym.
- „ … ” są elementami podrzędnymi odpowiednio administracji i sprzedaży.
Jak czytać XML za pomocą PHP
Napiszmy teraz kod, który odczyta dokument XML pracowników i wyświetli 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 tablicowej $xml.
- „$lista = $xml->rekord;” pobiera zawartość węzła rekordu.
- „for ($i = 0; $i < count(…)…” to pętla for, która odczytuje tablicę numeryczną i wyświetla 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 naszej aplikacji
Zakładając, że zapisałeś plik Index.php w folderze phptus/xml, przejdź do adresu URL http://localhost/phptuts/xml/index.php
Jak utworzyć dokument XML za pomocą PHP
Przyjrzymy się teraz, jak utworzyć dokument XML za pomocą PHP.
Powyższy przykład wykorzystamy na diagramie drzewa DOM.
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', '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"; ?>
TUTAJ,
- „$dom = nowy dokument 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 = nowy DOMAttr('id_filmu', '5467');” definiuje atrybut identyfikatora filmu węzła Filmy
- „$child_node_element_name = $dom->createElement('ElementName', 'ElementValue')” tworzy węzeł podrzędny węzła Filmy. ElementName określa nazwę elementu, np. Tytuł. ElementValue ustawia wartość węzła podrzędnego, np. Kampania.
- „$root->appendChild($movie_node);” dołącza elementy movie_node 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 ' ' . $nazwa_pliku_xml . „ został pomyślnie utworzony”;” tworzy łącze do pliku XML.
Testowanie naszej aplikacji
Zakładając, że zapisałeś plik create_movies_list w folderze phptuts/xml, przejdź do adresu URL http://localhost/phptuts/xml/create_movies_list.php
Kliknij link filmy_list_xml
Podsumowanie
- XML to skrót od Extensible Markup Language
- XML może być używany do wymiany informacji pomiędzy systemami lub przechowywania ustawień konfiguracyjnych aplikacji itp.
- DOM to skrót od Document Object Model. XML DOM postrzega dokument XML jako strukturę drzewa
- Parser XML to program, który tłumaczy dokument XML na dokument przypominający strukturę drzewa DOM.
- CDATA służy do ignorowania znaków specjalnych podczas analizowania dokumentów XML.
- PHP używa simplexml_load_file do odczytu dokumentów XML i zwracania wyników w postaci tablicy numerycznej
- Klasa PHP DOMDocument do tworzenia plików XML.