prezentace
Transkript
Zpracování XML v prohlížečích Jiří Matějka Jakub Jelínek Osnova 1. XPath v Javascriptu 2. Parsing a serializace 3. E4X XPath v Javascriptu DOM 3 XPath – W3C Working Group Note (2004) XPathEvaluator metoda evaluate vrací objekt typu XPathResult XPathEvaluator získání instance: var eval = new XPathEvaluator(); eval.evaluate() document.evaluate metoda evaluate() evaluate(xpathExpression, contextNode, namespaceResolver, resultType, result) contextNode – kontextový uzel namespaceResolver – funkce: namespace -> URI XPathExpression.createNSResolver() nebo null resultType – konstanta, určuje jaký typ chceme vrátit (dále) result – objekt XPathResult pro opětovné použití Konstanty návratového typu možné typy výsledku: uzel, množina uzlů, boolean, string, number BOOLEAN_TYPE NUMBER_TYPE STRING_TYPE ANY_UNORDERED_NODE_TYPE FIRST_ORDERED_NODE_TYPE ORDERED_NODE_ITERATOR_TYPE UNORDERED_NODE_ITERATOR_TYPE ORDERED_NODE_SNAPSHOT_TYPE UNORDERED_NODE_SNAPSHOT_TYPE ANY_TYPE Příklad var paragraphCount = document.evaluate('count(//p)', document, null, XPathResult.NUMBER_TYPE, null); alert( 'This document contains ' + paragraphCount.numberValue + ' paragraph elements' ); Podrobnosti ITERATOR vs. SNAPSHOT iterátor se může zneplatnit při změně dokumentu ORDERED vs. UNORDERED ORDERED v pořadí uvedení v dokumentu XPathResult – atributy,metody zapouzdřuje výsledek konstanty také patří sem int resultType - NUMBER_TYPE, ... boolean invalidIteratorState boolean booleanValue double numberValue string stringValue Node singleNodeValue Node iterateNext() int snapshotLength Node snapshotItem(int index) Příklad var iterator = document.evaluate('//phoneNumber', documentNode, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null ); try { var thisNode = iterator.iterateNext(); while (thisNode) { alert( thisNode.textContent ); thisNode = iterator.iterateNext(); } } catch (e) { dump('Error: Document tree modified during iteration' + e ); } Podpora Firefox(3), Opera(9.5), Chrome(1), Safari IE ne, možnosti: použít z knihovny MSXML metody selectSingleNode, selectNodes Javascript XPath knihovny LlamaLab http://llamalab.com/js/xpath Google AJAXSLT http://goog-ajaxslt.sourceforge.net Parsing a serializace XML Převod do/z DOM reprezentace Do/ze souboru Do/z řetězce Potřeba různého kódu Pro Internet Explorer Pro ostatní prohlížeče Document Object Model Load and Save – W3C Recommendation 2001 Načtení ze souboru Internet Explorer xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async = false; xmlDoc.load("file.xml"); Ostatní XmlDoc = document.implementation. createDocument("","",null); xmlDoc.async = false; xmlDoc.load("file.xml"); Načtení z řetězce Internet Explorer xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async = false; xmlDoc.loadXML("<root>...</root>"); Ostatní parser = new DOMParser(); xmlDoc = parser.parseFromString( "<root>...</root>", "text/xml"); Použití • • • • xmlDoc.getElementsByTagName xmlDoc.childNodes(0).getAttribute("id") xmlDoc.createAttribute xmlDoc.appendChild • httpRequest = new XMLHttpRequest(); • httpRequest.responseXML Uložení (serializace) Do souboru Metoda save() • xmlDoc.save("C:\Temp\newAlbums.xml") Do řetězce (pouze IE) Vlastnost xml • var xmlText = objXMLDoc.xml; E4X E4X = ECMAScript for XML Standard ECMA-357 Standardní rozšíření JavaScriptu pro práci s XML Prosinec 2005 (druhá verze) Podpora v prohlížečích Mozilla Firefox 1.5+ Pro IE existuje knihovna IEE4X ActionScript 3+ Vytvoření objektu Přiřazení „inline“ var way_one = <my first='e4x'> <some other='tag'/></my>; Použití konstruktoru var way_two = new XML( "<my second='e4x'>Hallo!</my>"); Vytvoření objektu II Parametry v „inline“ zápisu Atributy bez uvozovek var attr = 42; var text = "Hallo world"; var foo = <foo rand='27' />; var x = <say p={attr}>{text}{foo} </say>; JavaScriptové výrazy •var x = <say p={attr + text}> Použití XML objektu Potomek nebo více potomků . nebo [] (stejný význam) person.name Atributy mají prefix @ ~ person['name'] person.likes.@since child(int) ~ [int] person.likes.child(1) ~ person.likes[1] var person = <person>...</person> Užitečné funkce text() Bez XML tagů toXMLString() copy() Hluboká kopie Seznamy XML uzlů length() Iterace Přidání do seznamu for each (var x in person.likes) person.likes += <pizza/> Prázdný seznam var empty = <></> Predikáty Do kulatých závorek people.person.(name == "Joe").age Použití JS funkcí function over40(i) { return i > 40; } people.person. (over40(parseInt(age))).name (parseInt(age)) Úprava XML Změny hodnot přiřazením Přidávání nových uzlů Přiřazením hodnoty neexistujícímu atributu atritut vznikne += jako u seznamů Operátor delete Úprava XML - příklad person.name = "Jakub Jelínek"; person.likes.os.@since = 2004; person.likes.os.@new_attribute = 'foo'; person.likes.*[2] += <foo/>; person.likes += <foo/>; delete delete delete delete order.customer.address; order.customer.@id; order.item[0].price[0]; order.item; person..*.length() Zdroje Introduction to using XPath in JavaScript, Mozilla Developer Center, https://developer.mozilla.org/en/Introduction_to_using_XPath_in _JavaScript XML DOM Tutorial, W3C Schools, http://www.w3schools.com/DOM/default.asp E4X Tutorial, W3C Schools, http://www.w3schools.com/e4x/default.asp
Podobné dokumenty
UNICORN COLLEGE BAKALÁŘSKÁ PRÁCE
umožňuje využívat grafických prvků knihovny Swing a tato knihovna byla použita i při
realizaci cílového appletu této práce. Příklad jednoduchého appletu zobrazujícího jen pohyblivou grafiku je např...
rekreační objekt Drahouš
v Im UD7 tE motf v &f|. it!f, bl*,
drbcn|
hgthr pmcbm v ilffi
F rt|df,io I **f,8.
Oq*F Ttodtt p|p tslcrd, tfifal
tnDrbd a udran
z&evu
DSCr{nfll
Mapy na Internetu
základě těchto stránek jsem vytvořil osnovu této práce. Na tomto webu také existuje velká spousta
odkazů na další více či méně s tématem související informace. Bohužel, tyto stránky nejsou průběžně...
Prezentace aplikace PowerPoint
všechny prvky ve vztahu k danému elementu (tj. osy,
testy uzlů i atributů)
Vědecké výpočty v matematické biologii
Vědecký přístup založený na pozorování je základem všech věd a základem všech způsobů, jak poznávat objektivní realitu. Věda začíná a často končí pozorováním. V zásadě lze říci,
že, pozorovací věda...
Tvorba webových aplikací pomocí AJAX
HTML (Hypertext Markup Language). Mohou být použité i jiné programovací jazyky jako
XML, XHTML apod. Jednotlivým příkazům jazyka HTML se říká tagy (elementy) a vytvářený
soubor může mít podobu doku...
Český úřad zeměměřický a katastrální
(jak EuroGeographics doposud prosazovalo a jak je v celém tomto dokumentu předpokládáno), je
tento požadavek nesmyslný. Druhou připomínkou je použití dotazu GetFeature s parametrem
FeatureId v naše...