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

 ฤŒtenรญ XML pomocรญ 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

Vytvoล™te XML dokument pomocรญ PHP

Kliknฤ›te na odkaz movies_list_xml

Vytvoล™te XML dokument pomocรญ PHP

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.

Shrลˆte tento pล™รญspฤ›vek takto: