Komentáře k článku
Přehled podpory XML v PHP5

Snad každý programátor webových aplikací se setkal ve své praxi s nutností zpracovat data ve formátu XML. V šestidílném seriálu Jiřího Koska si představíme nástroje a techniky, jaké máme k dispozici v aktuální verzi PHP 5, a na příkladech si ukážeme jejich silné stránky a jejich slabiny.
Well-formed?
Jde nějak rozumně otestovat, jestli je XML v pořádku? Protože simplexml_load_file při špatném XML umře na Fatal a není cesty zpět.
Re: Well-formed?
V PHP nápovědě je tomu věnována celá stránka (přímo u SimpleXML)
http://cz2.php.net/…s-errors.php
Re: Well-formed?
Pokud i přesto potřebujete načíst non well-formed XML document, můžete nastavit parametr $options funkci simplexml_load_file() nebo simplexml_load_string() na některou z LIBXML_ERR_* konstant.
Pokud chcete chyby v XML kompletně ignorovat a načíst, co se dá :), tak mě osobně se vždy osvědčilo použití DOMDocument::loadHTML(), které právě tohle umí. (Do SimpleXML se to pak převede pomocí simplexml_import_dom().)
SimpleXML a DOMDocument – převody mezi nimi
PHP obsahuje dvě rozšíření vystavená nad libxml2: SimpleXML a DOMDocument.
Načtenou XML strukturu lze reprezentovat pomocí obou těchto rozhraní. SimpleXML umožňuje práci pouze s tagy, atributy a jejich (nesmíšeným) obsahem. Zatímco DOMDocument poskytuje rozhraní pro práci s kompletním dokumentem (umožňuje zpracovávat entity, komentáře, instrukce preprocesoru, atp.).
PHP poskytuje dvě „zázračné“ funkce dom_import_simplexml() a simplexml_import_dom(), které vrací referenci na předanou XML strukturu přes objekty druhé knihovny. Díky těmto funkcím můžete na jednu XML strukturu nahlížet přes obě knihovny (např. pomocí XPath v SimpleXML vybrat elementy a poté na ně aplikovat nějakou funkci z DOMDocumentu). A jelikož obě knihovny jsou vystaveny nad libxml2, tak volání těchto převodních funkcí nijak nezvýší paměťové nároky na uložení XML (struktura se v paměti neduplikuje).
kniha PHP a XML
Tú knihu som si akurát včera kúpil.