Reklama

zonerbooks.cz | zoner.cz | czechia.com | regzone.cz | inshop.cz | inmail.cz | zonerpress.cz | zonerantivirus.com | zonerama.cz

interval.cz

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.


Reklama


Další aktuální články na interval.cz

Tematicky související články

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ář.

Přidat nový komentář

Jméno a e-mail jsou nepovinné. Příspěvky obsahující odkaz jsou moderovány.

Zoner AntiVirus Free pro Android
zabezpečte si svůj smartphone, zdarma
Profesionální eshop Zoner inShop od 990 Kč.
Reklama
Reklama

Syndikace

hledáme nové autory | redakce interval.cz | reklama na interval.cz

© ZONER software, a.s., všechna práva vyhrazena, interval.cz dodržuje právní předpisy o ochraně osobních údajů. Powered by WordPress.