Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Návrh a tvorba WWW Přednáška 8

Podobné prezentace


Prezentace na téma: "Návrh a tvorba WWW Přednáška 8"— Transkript prezentace:

1 Návrh a tvorba WWW Přednáška 8
PHP IV – Práce s XML SAX, DOM, SimpleXML, …

2 Opakování XML Extenible Markup Language (rozšiřitelný značkovací jazyk) je značkovací jazyk, který slouží k tvorbě dokumentů s vlastními elementy a atributy, které je možné validovat oproti vlastnímu schématu. Je tedy možné vytvořit de facto vlastní jazyk. XML je zjednodušenou podmnožinu jazyka SGML. První verze jazyka byla publikována v roce 1998.

3

4 SAX SAX (Simple API for XML) je rozhraní, které umožňuje procházet XML dokument a to bez potřeby, aby byl celý dokument nahrán do paměti. SAX generuje při nalezení např. počáteční značky, koncové značky či jakéhokoliv jiného prvku v dokumentu událost, prostřednictvím které si příslušnou část XML dokumentu obsloužíme. Vytvoření parseru Nastavení událostí pro parser $parser = xml_parser_create("utf-8"); xml_set_element_handler($parser, "startElement", "endElement"); xml_set_character_data_handler($parser, "characters");

5 SAX Funkce startElement Otevření spojení se serverem.
Funkce endElement function startElement($parser, $name, $attrs) { global $level; foreach ($attrs as $key => $hodnota) { echo $key; echo $hodnota; } $level++; function endElement($parser, $name) { global $level; $level--; echo $level; }

6 DOM DOM (Document Object Model) je objektový model, který umožňuje procházet HTML a XML dokumenty. DOM načítá veškerá data do paměti a z nich vytváří hierarchický strom. Jeho použití je optimální pouze tam, kde zpracováváme relativně málo dat a kdy k jednotlivým elementům přistupujeme v náhodném pořadí a opakovaně. DOM Level Level 0 – obsahuje vše co předcházelo W3C DOM Level 1 – navigace v DOM dokumentu, manipulace s obsahem Level 2 – podpora jmenných prostorů Level 3 – skládá se z Core, Load and Save, XPath, Views and Formatting, Requirements, Validation

7 Strom modelu DOM

8 DOM Vytvoření objektu DOMDocument Načtení XML/HTML souboru
Uložení XML/HTML souboru $dom = new DOMDocument(); $dom->load($fileName) $dom->loadXML($string) $dom->loadHTMLFile($fileName) $dom->loadHTML($string) $dom->save($fileName) $s = $dom->saveXML() $dom->saveHTMLFile($fileName) $s = $dom->saveHTML()

9 DOM dokument I. createAttribute — vytvoří nový atribut
createAttributeNS — vytvoří nový atribut se jmenným prostorem createCDATASection — vytvoří nový uzel s CDaty createComment — vytvoří komentář createDocumentFragment — vytvoří nový fragment dokumentu createElement — vytvoří nový element createElementNS — vytvoří nový element se jmenným prostorem createEntityReference — vytvoří novou referenci entity createProcessingInstruction — vytvoří nový PI uzel createTextNode — vytvoří nový textový uzel getElementById — vrátí element přes ID getElementsByTagName — vrátí element přes jméno getElementsByTagNameNS — vrátí element přes jméno se jmenným prostorem importNode — importuje uzel do stávajícího dokumentu load — nahraje XML ze souboru loadHTML — nahraje řetězec HTML loadHTMLFile — nahraje HTML ze souboru loadXML — nahraje řetězec XML

10 DOM dokument II. normalizeDocument — normalizuje dokument
registerNodeClass — registrace vlastní třídy do rozšíření DOM relaxNGValidate — validace dokumentu pomocí relaxNG relaxNGValidateSource — validace dokumentu pomocí relaxNG save — uloží interní XML strom do souboru saveHTML — uloží interní HTML dokument do řetězce saveHTMLFile — uloží interní HTML dokument do souboru saveXML — uloží interní XML strom do řetězce schemaValidate — validace dokumentu pomocí schématu schemaValidateSource — validace dokumentu pomocí schématu validate — validace dokumentu pomocí DTD xinclude — nahradí XIncludes v DOMDocument Object

11 DOM element getAttribute — vrátí hodnotu atributu
getAttributeNode — vrátí atribut uzlu getAttributeNodeNS — vrátí atribut uzle getAttributeNS — vrátí hodnotu atributu getElementsByTagName — vybere element prostřednictvím jména tagu getElementsByTagNameNS — vybere element prostřednictvím jména tagu hasAttribute — zkontroluje, zda atribut existuje hasAttributeNS — zkontroluje, zda atribut existuje removeAttribute — odebere atribut removeAttributeNode — odebere atribut uzlu removeAttributeNS — odebere atribut setAttribute — přidá nový atribut setAttributeNode — přidá nový atribut uzlu setAttributeNodeNS — přidá nový atribut uzlu setAttributeNS — přidá nový atribut setIdAttribute — deklaruje atribut name setIdAttributeNode — deklaruje atribut name uzlu setIdAttributeNS — deklaruje atribut name

12 DOM uzel appendChild — přidá potomka na konec potomků
C14N — kanonizuje (ujednocuje) uzly na řetězec C14NFile — kanonizuje (ujednocuje) uzly na soubor cloneNode — klonuje uzel getLineNo — vrátí číslo řádky pro uzel getNodePath — vrátí XPath pro uzel hasAttributes — kontroluje, zda má uzel atribut hasChildNodes — kontroluje, zda má uzel potomka insertBefore — přidá potomka před referenční uzel isDefaultNamespace — kontroluje, zda určený jmenný prostor výchozím prostorem isSameNode — testuje, zda dva uzly jsou totožné isSupported — testuje, zda je daná vlastnost v dané verzi podporována lookupNamespaceURI — vrátí URI jmenného prostoru prostor na základě prefixu lookupPrefix — vrátí prefix na základě jmenného prostoru normalize — normalizuje uzel removeChild — odebere potomka ze seznamu potomků replaceChild — nahradí potomka

13 SimpleXML SimpleXML je rozšíření PHP, které umožňuje pracovat s XML dokumenty. Jedná se o další xml parser, který je v PHP5 dostupný. Jeho výhodou je o proti ostatním parserum značná jednoduchost v použití. S obsahem dokumentu XML pracujeme prostřednictvím datových struktur. Základní pravidla SimpleXML: Vlastnosti určují iterátory prvku. Číselné indexy označují prvky. Nečíselné atributy označují atributy. Přístup k textovým datům umožňují řetězové převody.

14 SimpleXML Funkce SimpleXML Vytvoření SimpleXML objektu
vytvoření SimpleXML uzlu z DOM uzlu vytvoření SimpleXML objekt ze souboru vytvoření SimpleXML objekt z řetězce Vytvoření SimpleXML objektu Vrácení správně strukturovaného XML domentu simplexml_import_dom (); simplexml_load_file("test.xml"); simplexml_load_string (); $xml = "<library><item>ISPWE</item></library>"; $sxe = new SimpleXMLElement($xml) $sxe->asXML();

15 SimpleXML Přidání potomka XML uzlu Přidání atributu k elementu
Vrácení potomků uzlu Vrácení atributů elementu Vrácení počtu potomků elementu Spuštění XPath výrazu $company = $sxe->addChild(‘company’); $company->addAttribute(‘id’, ‘10’); $sxe->children(); $sxe->company[0]->attributes(); $sxe->count(); $sxe->xpath('/company');

16 XPath XPath je jazyk, prostřednictvím kterého lze adresovat určité části XML dokumentu a to pomocí výrazu. Xpath je standardem W3C. XPath výraz se skládá: osy testu uzlu predikátu XPath výraz vrací: logická hodnota (true nebo false) číslo textový řetězec množina uzlů ze stromu vstupního dokumentu část stromu dokumentu

17 XPath v DOM a SimpleXML DOM SimpleXML
evaluate — vyhodnotí XPath výraz a vrátí typ výsledku query — vyhodnotí XPath výraz registerNamespace — registruje jmenný prostor v DOMXPath object registerPhpFunctions — registruje PHP funkci jako XPath funkci SimpleXML query – vyhodnocení XPath výrazu $xpath = new DOMXPath($dom); $title = $xpath->query('//title'); $sxe = new SimpleXMLElement($xml); $sxe->xpath('//title');

18 Příklad XPath $string = <<<XML <a> <b>
<c>text</c> <c>stuff</c> </b> <d> <c>code</c> </d> </a> XML; $xml = new SimpleXMLElement($string); $result = $xml->xpath('/a/b/c'); while(list( , $node) = each($result)) { echo '/a/b/c: ',$node,"\n"; } $result = $xml->xpath('b/c'); echo 'b/c: ',$node,"\n";


Stáhnout ppt "Návrh a tvorba WWW Přednáška 8"

Podobné prezentace


Reklamy Google