Jsem tu opět s povídáním o používání SimpleXML v PHP. V minulém díle jste se dozvěděli základy používání a hlavně také jakým způsobem číst jednoduše dokument XML. Dnes bychom se měli zabývat čtením smíšeného obsahu.
Jak již bylo v úvodu řečeno, v minulém díle jste se naučili jakým způsobem lze velmi jednoduše číst data z dokumentu XML. Pro občerstvení paměti zde uvedu jednoduchý příklad:
<?xml version=”1.0″ encoding=”utf-8″?>
<firma>
<zamestnanec>
<jmeno>Jiří</jmeno>
<prijmeni>Krátký</prijmeni>
</zamestnanec>
</firma>
a čteme:
<?php
$xml=simplexml_load_file(”zamestnanci.xml”);
echo $xml->zamestnanec->jmeno;
?>
Jak vidíte, čtení je velmi jednoduché. Ale jak byste přečetli tento soubor:
<?xml version=”1.0″ encoding=”utf-8″?>
<firma>
<zamestnanec>
<jmeno>Jiří<druhe_jmeno>-David-</druhe_jmeno>Krátký</jmeno>
</zamestnanec>
</firma>
chci vypsat celé informace, tedy celé jméno i druhé jméno, přesně tak jak je to v XML dokumentu. Nyní by bylo možná dobré říct co to je smíšený obsah. Smíšený obsah je takový obsah kdy do vnitřku jednoho elementu je vložen jiný element, například takto:<jmeno>Jiří<druhe_jmeno>-David-</druhe_jmeno>Krátký</jmeno> , do těla elementu jmeno byl vložen nový element druhe_jmeno.
Pokud bychom výše uvedený dokument přečetli tak, jak jste zvyklí:
<?php
$xml=simplexml_load_file(”zamestnanci.xml”);
echo $xml->zamestnanec->jmeno;
?>
Výsledek by byl pouze JiříKrátký
Takovýto výsledek však nechceme, abychom docílili našeho záměru budeme muset použít lepší postup. Na čtení smíšeného obsahu existuje metoda asXML() .
Co metoda asXML() dělá? Odpověď je jednoduchá, jedná se o formátovací metodu, která převede rodičovský prvek na formát XML version 1.0. Takže správné řešení našeho příkladu by bylo takovéto:
<?php
$xml=simplexml_load_file(”zamestnanci.xml”);
echo $xml->zamestnanec->jmeno->asXML();
//Výsledek bude Jiří-David-Krátký
?>
Možná bych se tu mohl ještě zmínit o samotné metodě asXML(). Je to poměrně zajímavá metoda, pokud ji jako parametr předáte název souboru, tak se daný element přiřazený metodě asXML() zapíše do souboru(soubor musí existovat):
$xml=simplexml_load_file(”zamestnanci.xml”);
$xml->zamestnanec->jmeno->asXML(”x.txt”);
v souboru x.txt bude zapsáno toto: <jmeno>Jiří<druhe_jmeno>-David-</druhe_jmeno>Krátký</jmeno>, princip je takový ,že jestliže do parametru metody uvedete název souboru, funkce vrací booleanovské hodnoty true nebo false, pokud do parametru nic neuvedete, metoda vrací text.
Použití této metody může být mnohdy užitečné, další ukázky použití uvedu v některém dalším díle věnovaném SimpleXML.
O programování a všem okolo využívá WordPress MU a běží na Blog.zive.cz. Vytvořte si svůj vlastní blog
Sledování přes RSS: články
a komentáře