Rozhraní pro práci s XML dokumenty Roman Malo
Práce s XML dokumenty Datově a dokumentově orientované XML dokumenty Problém preference elementů a atributů Strom elementů Strom uzlů Základní zpracování dokumentů Softwarová infrastruktura XML aplikace 2
XML parser Základní softwarová aplikace pro práci s XML dokumenty syntaktický analyzátor validující, nevalidující Nezbytná komponenta jiných programů (procesorů) pro zpracování XML dokumentů Založen na různých rozhraních XML aplikace 3
Rozhraní pro práci s XML API (Application Program Interface) Kolekce metod a pravidel pro práci s XML dokumenty Nástroj pro automatizaci aktivit nad XML dokumenty XML aplikace 4
Princip API XML dokument XML parser API Program XML aplikace 5
Typy rozhraní Událostně orientované (Event-based) založené na identifikaci událostí flexibilnější, přizpůsobitelné SAX Stromově orientované (Tree-based) rozklad XML dokumentu na strom náročnější na implementaci DOM XML aplikace 6
Zpracování XML dokumentu Algoritmy implementované pro zpracování XML dokumentů postupně zpracovávají dokument postupem zleva do hloubky Založeno na stromech Časová složitost odpovídá počtu uzlů XML aplikace 7
Stromy uzlů Hierarchické uspořádání všech uzlů (případně elementů) v rámci dokumentu Základ pro řadu XML aplikací a přístup k jednotlivým částem stromu Stromy lze interpretovat pomocí stromových gramatik (bezkontextové gramatiky) Interpretace stromu je zobrazení, které přiřazuje každému uzlu stromu některý z nonterminálních symbolů XML aplikace 8
SAX Simple API for XML Verze 1,2 Umožňuje zpracování pomocí rozpoznání jednotlivých událostí při zpracování XML dat Proudové zpracování Vhodné pro nevalidační parsery PHP XML Parser http://cz2.php.net/manual/en/ref.xml.php XML aplikace 9
Zpracování XML přes SAX Postupné rozpoznávání událostí (events) počátek dokumentu konec dokumentu počáteční značka elementu koncovou značka elementu znaková data další dle implementace Vázání událostí na handlery (event handler) Rozpoznání událostí a vyvolání navázaných funkcí činí parser XML aplikace 10
Schéma zpracování SAX XML aplikace 11
Vznik událostí XML aplikace 12
Výhody SAX Jednoduché použití Rychlé zpracování Implementačně nenáročné Okamžité přerušení práce při chybě Postupné zpracování proudu XML aplikace 13
Nevýhody SAX Potřeba přiřazení programového kódu k událostem Nemožnost dynamické změny dokumentu XML aplikace 14
DOM Document Object Model W3C, 3. level Objektově orientovaný přístup Stromově orientované rozhraní Metody pracují nad celým stromem XML aplikace 15
Zpracování XML přes DOM Parser vytvoří v paměti strom Existují předdefinované metody pro přístup k jednotlivým uzlům v rámci stromu Při chybě není možné zpracovat ani část dokumentu XML aplikace 16
Výhody DOM Dynamické zpracování Možnost opakování operací Přímý přístup k jednotlivým uzlům Objektově orientovaný přístup Jednotné metody v různých implementacích Optimální pro vyhledávání a validaci XML aplikace 17
Nevýhody DOM Prostorově náročné Při větších dokumentech může být pomalejší Některé jednodušší operace vyžadují těžkopádné programové konstrukce XML aplikace 18
Ukázka DOM (PHP) $dom = new DOMDocument(); $dom->loadxml($data); $root = $dom->documentelement; $knihy = $root->getelementsbytagname('kniha'); foreach ($knihy as $kniha) { $kc = $kniha->getattribute('kat_cislo'); $nazev = $kniha->getelementsbytagname('nazev')->item(0)->nodevalue; } print "Kniha s kc ".$kc." ma nazev ".$nazev.".<br/>"; XML aplikace 19
Implementace DOM Hierarchie tříd Kolekce metod Stejný programátorský pohled Možná nestandardní rozšíření XML aplikace 20
XML aplikace 21
Strom tříd XML aplikace 22
Práce s uzly získání uzlů a hodnot Vlastnosti nodetype nodename nodevalue parentnode childnodes firstchild lastchild previoussibling nextsibling Metody getelementbyid getelementsbytagname haschildnodes XML aplikace 23
Práce s uzly modifikace Metody insertbefore replacechild removechild appendchild clonenode normalize XML aplikace 24
Elementové uzly Vlastnosti tagname Metody getattribute setattribute removeattribute getattributenode setattributenode removeattributenode Další viz http://cz2.php.net/manual/en/ref.dom.php http://www.w3.org/tr/2004/rec-dom-level-3-core-20040407/c XML aplikace 25
Práce s třídami Základem je super třída uzlů Výběr uzlů podle typu či názvu Zpracování v rovině self či posun do jiné roviny (potomci, následníci, sourozenci ) Postupně se mění množina dostupných metod podle podtřídy se kterou pracujeme Potřeba udržování stavové informace o kontextovém uzlu XML aplikace 26
JDOM Java rozhraní pro XML Speciálně pro Javu Objektově orientované Částečně srovnatelné s běžným DOM XML aplikace 27
Děkuji za pozornost malo@pef.mendelu.cz