Simple API for XML
Z Multimediaexpo.cz
Simple API for XML (zkráceně SAX) umožňuje sériový přístup ke XML. Jde o tzv. proudové zpracování, při kterém se dokument rozdělí na jednotlivé jeho části (počáteční a koncové značky, obsahy elementů, komentáře, atd.). Postupně se pak volají jednotlivé události, které ohlašují nalezení konkrétní části. Způsob zpracování těchto jednotlivých událostí je pak již plně v kompetenci programátora.
Tato metoda vypadá na první pohled velice náročně, své uplatnění však má v konkrétních složitějších způsobech zpracování XML, zvláště tam, kde se k dokumentu nepřistupuje náhodně, ale sekvenčně se postupně čte celý obsah. Její další výhoda spočívá v rychlosti zpracovávání a menší paměťové náročnosti. Oproti DOMu bývá několikrát rychlejší, což u větších dokumentů může značně zkrátit čas vykonávání jednotlivých skriptů.
Příklad použití SAXu v PHP
<?php // vytvoření nového SAX parseru $this->parser = xml_parser_create(); // při nalezení počátečního a koncového tagu se bude volat funkce onStartElement() a onEndElement xml_set_element_handler($this->parser, "onStartElement", "onEndElement"); // nastavení funkce pro zpracování obsahu tagů na onContent() xml_set_character_data_handler($this->parser, "onContent"); // postupné čtení vstupního souboru (zde example.xml) if ($f = fopen("example.xml","r")) { // čtení souboru po 4 KB a jeho zpracovávání parserem while ($xml_data = fread($f,4096)) if (!$this->parseString($xml_data, feof($f))) { // vrátí-li metoda nulovou hodnotu, došlo k chybě echo "Chyba parsování!"; } fclose($f); } // tato funkce je volána při nalezení počátečního tagu function onStartElement($parser, $elementName, $attributes) { echo "nalezen počátečni tag s názvem $elementName: "; foreach ($attributes as $nazev => $hodnota) echo " atribut $nazev = '$hodnota';\n"; echo "\n"; } // tato funkce je volána při nalezení koncového tagu function onEndElement($parser, $elementName) { echo "nalezen koncový tag s názvem $elementName: "; } // tato funkce je volána poté, co je znám obsah elementu function onContent ($parser, $content) { echo "obsah elementu: ".$content."<br />" ; } ?>
Náklady na energie a provoz naší encyklopedie prudce vzrostly. Potřebujeme vaši podporu... Kolik ?? To je na Vás. Náš FIO účet — 2500575897 / 2010 |
---|
Informace o článku.
Článek je převzat z Wikipedie, otevřené encyklopedie, do které přispívají dobrovolníci z celého světa. |