Simple API for XML
Z Wikipedie, otevřené encyklopedie
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ů.
[editovat] Příklad použití SAXu v PHP
<?php // vytvoření nového SAX paresru $this->parser = xml_parser_create(); // informace, že při nalezení tagů se májí volat funkce On*Element xml_set_element_handler($this->parser, "onStartElement", "onEndElement"); // informace, že při nalezení obsahu elementu se má volat onContent xml_set_character_data_handler($this->parser, "onContent"); // postupné parsování souboru example.xml if ($f = fopen("example.xml","r")) { // postupne nacteni a zpracovani celeho souboru while ($xml_data = fread($f,4096)) if (!$this->parseString($xml_data, feof($f))) { echo "Chyba parserování!"; } fclose($f); } // metoda se zavolá 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"; } // metoda se zavolá při nalezení koncového tagu function onEndElement($parser, $elementName) { echo "nalezen koncový tag s názvem $elementName: "; } // metoda se zavolá při nalezení obsahu elementu function onContent ($parser, $content) { echo "obsah elementu: $content\n"; } ?>