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.

Zpět na článek

5 komentářů k článku Přehled podpory XML v PHP5:

  1. Jarda

    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.

    1. michal.kocarek

      Re: Well-formed?

      Pokud i přesto potřebujete načíst non well-formed XML document, můžete nastavit parametr $options funkci simplexml_load_fi­le() nebo simplexml_load_strin­g() 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::lo­adHTML(), které právě tohle umí. (Do SimpleXML se to pak převede pomocí simplexml_impor­t_dom().)

  2. michal.kocarek

    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, at­p.).

    PHP poskytuje dvě „zázračné“ funkce dom_import_sim­plexml() a simplexml_impor­t_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).

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=3092