XML (eXtensible Markup Language) p°edstavuje jednu z forem komunikace, kdy se vyu₧φvß textov²ch soubor∙. Skladba t∞chtou soubor∙ se do jistΘ mφry podobnß HTML, nalezneme zde tagy, atributy, kterΘ tvo°φ urΦitou strukturu. Jako p°φklad bychom si mohli ukßzat jednoduch² XML soubor:
<knihovna> <kniha> <jmeno>Kniha</jmeno> <autor>Autor knihy</autor> </kniha> </knihovna>
XML vy₧aduje, aby vÜechny tagy byly pßrovanΘ (m∞li sv∙j uzavφracφ tag) a jednotlivΘ atributy byly uvedeny v uvozovkßch. Flash pro prßci s XML nevy₧aduje ani definici XML, kterß b²vß na zaΦßtku dokumentu.
Instanci XML objektu vytvo°φme pomocφ deklarace:
var xmlObjekt = new XML();
SamotnΘ naΦtenφ dat mß na starosti metoda load, kterß p°ebφrß cestu k souboru.
xmlObjekt.load("soubor.xml");
Normßln∞ XML poklßdß vÜechny tabulßtory, zalomenφ za d∙le₧itΘ a n∞kdy mohou p°i naΦφtßnφ zp∙sobit potφ₧e. Vypnout je m∙₧eme pomocφ vlastnosti ignoreWhite nastavenφm na hodnotu true (n∞kdy naopak bude pot°eba zachovat strukturu dokumentu ve v²chozφm stavu a tuto vlastnost dßt na false).
xmlObjekt.ignoreWhite = true;
Nynφ, kdy mßme data naΦtena, je m∙₧eme zpracovat. M∙₧eme vyu₧φt udßlosti onLoad a reagovat tak na naΦtenφ dat ze souboru. Jako nßzev se dosazuje nßzev funkce, kterß bude obsahovat parametr (success), pomocφ kterΘho m∙₧eme porovnßvacφ konstrukcφ if poznat, zda naΦtenφ dat prob∞hlo v po°ßdku.
xmlObjekt.onLoad= Nacteni; function Nacteni(success){ if (success){ // Tady ji₧ m∙₧eme zpracovßvat data. }else{ trace("Nastala chyba!"); } }
Nynφ bychom se m∞li dostat ji₧ k samotnΘmu zφskßvßnφ dat ze XML soubor∙. XML soubor se sklßdß z takzvanΘ Root node (nejvyÜÜφ uzel), Child nodes (potomci) a z uzl∙, je₧ se nachßzejφ ve stejnΘ ·rovni (tzv. Siblings nodes - sourozenci).
Hlavnφ uzel (Root node) zφskßme pomocφ vlastnosti firstChild:
hlavni = xmlObjekt.firstChild;
JednotlivΘ dalÜφ uzly m∙₧eme zφskat pomocφ neustßlΘho odvozovßnφ (viz. p°φklad v²Üe) nebo takΘ pomocφ vlastnosti childNodes, kterß obsahuje kolekci uzl∙. U ka₧dΘho uzlu m∙₧eme urΦit vlastnosti:
NßÜ p°φklad uvßd∞n² na zaΦßtku mß nßsledujφcφ strukturu:
<knihovna> - childNodes[0].nodeName <kniha> - childNodes[0].childNodes[0].nodeName <jmeno> - childNodes[0].childNodes[0].childNodes[0].nodeName Kniha - childNodes[0].childNodes[0].childNodes[0].childNodes[0].nodeValue </jmeno> <autor> - childNodes[0].childNodes[0].childNodes[1].nodeName Autor knihy - childNodes[0].childNodes[0].childNodes[1].childNodes[0].nodeValue </autor> </kniha> </knihovna>
V p°φpad∞, ₧e n∞kter² uzel bude obsahovat atributy, m∙₧eme je zφskat pomocφ vlastnosti attributes.<nßzev atributu> nebo takΘ attributes["nßzev atributu"].
Nynφ si ukß₧eme jednotlivΘ vlastnosti a metody, kterΘ se p°i prßci s XML ve Flashi vyu₧φvajφ.
Umo₧≥uje p°idat Child node na zvolenΘ mφsto.
Umo₧≥uje duplikovat zvolen² uzel stejnΘho nßzvu, hodnoty, atribut∙. Jestli₧e je jako parametr dosazena hodnota true, zkopφruje se rekurzivn∞ cel² strom uzl∙ (p°esnß kopie).
Umo₧≥uje p°idat nov² prßzdn² element s nßzvem uveden²m jako parametr.
Vytvo°φ nov² Text node s nßzvem uveden²m jako parametr.
Vrßtφ poΦet ji₧ naΦten²ch bajt∙ XML souboru.
Vrßtφ velikost XML souboru.
Vrßtφ hodnotu true v p°φpad∞, ₧e zvolen² XML objekt obsahuje Child node.
Metoda, kterß umo₧≥uje p°idat Child node p°ed zvolen² uzel.
Ji₧ zmφn∞nß metoda, kterß slou₧φ k naΦtenφ XML souboru.
Umo₧≥uje zpracovat zvolen² text zadan² jako parametr (vznikne novß stromovß struktura).
Sma₧e zvolen² uzel.
PoÜle zvolen² XML objekt na uvedenou HTTP adresu metodou POST. Jako druh² parametr se dosazuje typ okna, kterΘ se otev°e po nßvratu dat (_self, _blank, _parent, _top).
PoÜle zvolen² XML objekt na uvedenou HTTP adresu metodou POST. Jako druh² parametr se zadßvß objekt, kter² bude vytvo°en jako odpov∞∩ ze serveru.
P°evede zvolen² objekt na textovou hodnotu.
Nynφ si ukß₧eme jednotlivΘ vlastnosti a vysv∞tlφme si, k Φemu slou₧φ.
Asociativnφ pole, jen₧ obsahuje atributy zvolenΘho objektu. P°istupovat k tΘto vlastnosti m∙₧eme pomocφ dvou zp∙sob∙:
<objekt>.attributes.<nßzev atributu>; <objekt>.attributes["nßzev atributu"];
Vracφ MIME typ metody, kterou byla odeslßna na server pomocφ metody send a sendAndLoad data. V²chozφ je "application/x-www-form-urlencoded".
Vracφ pole vÜech uzl∙ zvolenΘho objektu.
Vlastnost, pomocφ nφ₧ m∙₧eme zφskat a nastavit DOCTYPE deklaraci naΦtenΘho XML souboru.
Vlastnost, pomocφ nφ₧ m∙₧eme zφskat prvnφ uzel ve zvolenΘm objektu.
Vlastnost, kterou jsme si ji₧ popsali a umo₧≥uje nastavit ignorovßnφ mezer.
Opak vlastnosti firstChild, kterß vracφ poslednφ uzel ve zvolenΘm objektu.
Vrßtφ hodnotu true v p°φpad∞, ₧e byl cel² soubor (XML.load) ·sp∞Ün∞ naΦten. V opaΦnΘm p°φpad∞ vracφ hodnotu false.
Vrßtφ dalÜφ tzv. Sibling node (sourozenec) danΘho objektu.
Ji₧ zmφn∞nß vlastnost, kterß obsahuje nßzev danΘho uzlu.
Ji₧ zmφn∞nß vlastnost, kterß obsahuje typ danΘho uzlu.
Ji₧ zmφn∞nß vlastnost, kterß obsahuje typ danΘho uzlu.
Vrßtφ rodiΦovsk² uzel danΘho objektu.
Opak vlastnosti nextSibling vracejφcφ p°edchozφ Sibling node.
Vracφ Φφslo, vyjad°ujφcφ stav naΦtenφ dokumentu:
Vracφ XML deklaraci, kterou obsahuje zvolen² soubor.
Prßce s XML ve Flashi je opravdu rozmanitß. Dßvß nßm mnoho mo₧nostφ, jak dokumenty Φφst a zpracovßvat. Pro podrobn∞jÜφ dokumentaci XML bych doporuΦil °adu knih, kterΘ vyÜly na naÜem trhu.
Pro tento dφl to bude vÜe. V p°φÜtφm dφle budeme pokraΦovat v povφdßnφ o ActionScriptu.