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
Program
API
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.".
"; }
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
Metody
tagName 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
[email protected]