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.


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č.
Zoner Photo Studio 14 – vyzkoušejte ZDARMA
Reklama
Reklama
Zoner Photo Studio 14

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.