PHP XML Tutorial: Create, Parse, Read with Example
Co je XML?
XML je zkratka pro Extensible Markup Language.
XML se pouลพรญvรก ke strukturovรกnรญ, uklรกdรกnรญ a pลenosu dat z jednoho systรฉmu do druhรฉho.
XML je podobnรฉ HTML.
Pouลพรญvรก otevรญracรญ a uzavรญracรญ znaฤky.
Na rozdรญl od HTML umoลพลuje XML uลพivatelลฏm definovat svรฉ vlastnรญ znaฤky.
Co je DOM?
DOM je zkratka pro Document Object Model.
Je to multiplatformnรญ a jazykovฤ neutrรกlnรญ standard, kterรฝ definuje, jak pลistupovat k datลฏm a jak s nimi manipulovat;
- HTML
- XHTML
- XML
DOM XML se pouลพรญvรก k pลรญstupu a manipulaci s dokumenty XML. To zobrazรญ dokument XML jako stromovรก struktura.
XML Parsery
Analyzรกtor XML je program, kterรฝ pลeklรกdรก dokument XML na objekt modelu XML dokumentu (DOM).
S objektem XML DOM lze potรฉ manipulovat pomocรญ JavaSkript, Pythona PHP atd.
Klรญฤovรฉ slovo CDATA, kterรฉ je zkratkou pro (neanalyzovanรก) znakovรก data, se pouลพรญvรก k ignorovรกnรญ speciรกlnรญch znakลฏ, jako je โ<,>โ, pลi analรฝze dokumentu XML.
Proฤ pouลพรญvat XML?
- Webovรฉ sluลพby jako SOAP a REST pouลพรญvajรญ k vรฝmฤnฤ informacรญ formรกt XML. Kdyลพ se nauฤรญte, co je XML a jak funguje, zรญskรกte konkurenฤnรญ vรฝhodu jako vรฝvojรกล, protoลพe modernรญ aplikace hojnฤ vyuลพรญvajรญ webovรฉ sluลพby.
- Dokumenty XML lze pouลพรญt k uloลพenรญ konfiguraฤnรญch nastavenรญ aplikace
- Umoลพลuje vรกm vytvรกลet si vlastnรญ znaฤky, dรญky nimลพ je flexibilnฤjลกรญ.
Pลรญklad dokumentu XML
Pลedpoklรกdejme, ลพe se vyvรญjรญteping aplikace, kterรก zรญskรกvรก data z webovรฉ sluลพby ve formรกtu XML.
Nรญลพe je ukรกzka toho, jak XML dokument vypadรก.
<?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>
TADY,
- โ โ urฤuje verzi xml, kterรก se mรก pouลพรญt, a kรณdovรกnรญ
- โ โ je koลenovรฝ prvek.
- โ โฆ โ jsou podลรญzenรฉ prvky sprรกvy a prodeje.
Jak ฤรญst XML pomocรญ PHP
Pojฤme nynรญ napsat kรณd, kterรฝ bude ฤรญst XML dokument zamฤstnancลฏ a zobrazovat vรฝsledky ve webovรฉm prohlรญลพeฤi. 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>';
}
?>
TADY,
- โ$xml = simplexml_load_file('employees.xml');โ pouลพรญvรก funkci simplexml_load_file k naฤtenรญ nรกzvu souboru zamฤstnanci.xml a pลiลazenรญ obsahu promฤnnรฉ pole $xml.
- โ$list = $xml->zรกznam;โ zรญskรก obsah uzlu zรกznamu.
- โfor ($i = 0; $i < poฤet(โฆ)โฆโ je cyklus for, kterรฝ ฤte ฤรญselnรฉ pole a vydรกvรก vรฝsledky
- โ$list[$i]->attributes()->man_no;โ pลeฤte atribut man_no prvku
- โ$list[$i]->name;โ pลeฤte hodnotu podลรญzenรฉho prvku name
- โ$list[$i]->position;โ pลeฤte hodnotu podลรญzenรฉho prvku pozice
Testovรกnรญ naลกรญ aplikace
Za pลedpokladu, ลพe jste uloลพili soubor index.php do sloลพky phptus/xml, pลejdฤte na URL http://localhost/phptuts/xml/index.php
Jak vytvoลit XML dokument pomocรญ PHP
Nynรญ se podรญvรกme na to, jak vytvoลit XML dokument pomocรญ PHP.
Vรฝลกe uvedenรฝ pลรญklad pouลพijeme ve stromovรฉm diagramu DOM.
Nรกsledujรญcรญ kรณd pouลพรญvรก PHP vestavฤnรฝ ve tลรญdฤ DOMDocument k vytvoลenรญ 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";
?>
TADY,
- โ$dom = novรฝ DOMDocument();โ vytvoลรญ instanci tลรญdy DOMDocument.
- โ$dom->encoding = 'utf-8';โ nastavรญ kรณdovรกnรญ dokumentu na utf-8
- โ$dom->xmlVersion = '1.0';โ urฤuje ฤรญslo verze 1.0
- โ$dom->formatOutput = true;โ zajiลกลฅuje, ลพe vรฝstup je dobลe naformรกtovanรฝ
- โ$root = $dom->createElement('Filmy');โ vytvoลรญ koลenovรฝ uzel s nรกzvem Movies
- โ$attr_movie_id = new DOMAttr('movie_id', '5467');โ definuje atribut movie id uzlu Movies
- โ$child_node_element_name = $dom->createElement('ElementName', 'ElementValue')โ vytvoลรญ podลรญzenรฝ uzel uzlu Movies. ElementName specifikuje nรกzev elementu, napล. Title. ElementValue nastavuje hodnotu podลรญzenรฉho uzlu, napล. The Campaign.
- โ$root->appendChild($movie_node);โ pลipojรญ prvky movie_node ke koลenovรฉmu uzlu Movies
- โ$dom->appendChild($root);โ pลipojรญ koลenovรฝ uzel k dokumentu XML.
- โ$dom->save($xml_file_name);โ uloลพรญ soubor XML do koลenovรฉho adresรกลe webovรฉho serveru.
- "echo " . $xml_file_name . โ byl รบspฤลกnฤ vytvoลenโ;โ vytvoลรญ odkaz na soubor XML.
Testovรกnรญ naลกรญ aplikace
Za pลedpokladu, ลพe jste uloลพili soubor create_movies_list do sloลพky phptuts/xml, pลejdฤte na adresu URL http://localhost/phptuts/xml/create_movies_list.php
Kliknฤte na odkaz movies_list_xml
Shrnutรญ
- XML je zkratka pro Extensible Markup Language
- XML lze pouลพรญt pro vรฝmฤnu informacรญ mezi systรฉmy nebo uklรกdรกnรญ konfiguraฤnรญch nastavenรญ aplikace atd.
- DOM je zkratka pro Document Object Model. XML DOM nahlรญลพรญ na dokument XML jako na stromovou strukturu
- XML Parser je program, kterรฝ pลeklรกdรก XML dokument XML do stromovรฉ struktury typu DOM.
- CDATA se pouลพรญvรก k ignorovรกnรญ speciรกlnรญch znakลฏ pลi analรฝze dokumentลฏ XML.
- PHP pouลพรญvรก simplexml_load_file ke ฤtenรญ dokumentลฏ XML a vracรญ vรฝsledky jako ฤรญselnรฉ pole
- PHP tลรญda DOMDocument pro vytvรกลenรญ souborลฏ XML.



