Základy použití XML v JavaScriptu
27. 11. 2002 | Jarmil Halamíček | JavaScript a Ajax | Komentáře: 0
Technologie XML je v rámci internetu, a nejen v něm, v poslední době čím dál tím rozšířenější. I když hlavní oblast zpracování dat z XML souborů je, a zřejmě i nadále bude, vyhrazena serverovým skriptům, můžeme k datům v externích XML souborech přistupovat i pomocí JavaScriptu.
Hlavním kamenem úrazu při zpracování XML dokumentů v JavaScriptu je jako obvykle silná nekompatibilita prohlížečů. Ne všechny prohlížeče podporují funkce potřebné pro zpracování XML. Veškeré dále popsané skripty byly testovány na u nás nejrozšířenější platformě Microsoft Internet Explorer, konkrétně na verzi 5.5. Dle tvrzení výrobce v dokumentaci by měly popsané funkce pracovat již od verze MSIE 4.
XML soubor
Pro účely ukázky uvažujme jednoduchý XML soubor s daty o rodině Novákových, jehož obsah vypadá nějak takto (soubor je na disku uložen pod názvem xmltest.xml):
<?xml version="1.0" encoding="Windows-1252" ?>
<rodina>
<otec roknar="1964">Jan Novák</otec>
<matka roknar="1969">Jana Nováková</matka>
<deti>
<dite pohlavi="M" roknar="1993">Petr Novák</dite>
<dite pohlavi="M" roknar="1995">Michal Novák</dite>
<dite pohlavi="Z" roknar="1998">Adéla Nováková</dite>
</deti>
</rodina>
Otevření XML souboru
K otevření souboru slouží několik následujících řádků kódu:
function verifyfunc() {
if (xmlDoc.readyState != 4) {
return false;
}
}
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.onreadystatechange=verifyfunc;
xmlDoc.load('xmltest.xml');
var xmlObj=xmlDoc.documentElement;
V uvedeném kódu jsme především vytvořili ActiveX objekt uvedené třídy, který slouží jako jakási "brána" k XML funkcím. Metod a funkcí objektu XMLDOM je celá řada a jejich popis by byl nad rámec tohoto článku (případné zájemce odkazuji například na kvalitně zpracovaný referenční přehled na http://www.devguru.com). Pro inicializaci jsme použili jen nezbytné minimum metod a vlastností:
- Nastavení vlastnosti async na false zabezpečí, že provádění dalšího kódu (po započetí nahrávání) bude pokračovat až po úplném nahrání XML souboru, a nedojde tedy k práci s neinicializovaným objektem.
- Vlastností onreadystatechange nastavujeme handler pro událost změny stavu nahrávání XML souboru; protože nahráváme synchronně, jedná se víceméně o formální zajištění.
- Metoda load provede vlastní nahrání XML souboru.
- Nakonec s využitím vlastnosti documentElement získáme výchozí "uzel" celého XML dokumentu - objekt s rozhraním typu Element.
Čtení XML dokumentu
XML dokumenty jsou organizovány ve stromové struktuře. Ke zpřístupnění jednotlivých větví a uzlů stromu slouží rozhraní Element, obsahující celou řadu metod a vlastností, které zpřístupní jednak parametry samotného uzlu, jednak jeho "předchůdce" a "následníky". Zájemce o podrobný popis bych opět odkázal na výše uvedený zdroj, pro základní čtení XML dokumentu nicméně vystačíme se dvěma až třemi základními postupy, jež jsou dostatečně zřejmé z následující ukázky kódu. Tato ukázka čte údaje o složení rodiny z výše uvedeného XML dokumentu a zobrazuje je v alert okně:
function WriteXML() {
var t= "Otec: " + xmlObj.childNodes(0).text + " (narozen " + xmlObj.childNodes(0).getAttribute("roknar") + ")\n"
t += "Matka: " + xmlObj.childNodes(1).text + " (narozena " + xmlObj.childNodes(1).getAttribute("roknar") + ")\n\n"
t += "Děti:\n"
var i;
for(i=0; i<xmlObj.childNodes(2).childNodes.length; i++ ) {
t += " " + xmlObj.childNodes(2).childNodes(i).text + " (narozen " + xmlObj.childNodes(2).childNodes(i).getAttribute("roknar") + ")\n"
}
alert(t);
}
Uvedený skript můžete vidět při práci.
XML je podle vyjádření mnohých perspektivní technologií, jejíž hlavní výhodou je relativně snadná přenositelnost dat mezi datovými zdroji i platformami. Budete-li mít zájem, můžeme si v dalších článcích na toto téma ukázat, třeba opět prostřednictvím JavaScriptu, další XML funkce, případně také řešení konkrétních aplikací, o něž budete mít zájem.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Další aktuální články na interval.cz
- Malware: android pod palbou, mobily v ohrožení?
- Pozvánka na Microsoft TechDays 2012
- Reklamní slepota: co to je a jak s ní bojovat?
- Pět důvodů, proč vybrat redakční systém Drupal
- Čeština pro WordPress 3.3.1 k dispozici
Tematicky související články
- Slabikář JavaScriptu - základy objektu document
- Základy práce se stavovým řádkem pomocí JavaScriptu
- Slabikář JavaScriptu - základy práce s formuláři
- Slabikář JavaScriptu - operátory a jejich použití
- Crossbrowser MARQUEE a BLINK v JavaScriptu
Dejte vědět i ostatním o článku
Diskuse (počet komentářů: 0)
Buďte prvním návštěvníkem, který přidá nový komentář.

