HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

XML állományok olvasása Script-ből


XML szolgáltatások kliens-oldali Script-ekben 1. rész

Példaprogram letöltése

10829 bájt

Most induló, két részes cikksorozatunkban a Microsoft XML Core Service néven (MSXML) elérhető komponenscsomag legújabb lehetőségeit vesszük számba. Ezek közül is azokra fektetjük a hangsúlyt, amelyek a kliens-oldali XML-szolgáltatásokhoz kapcsolódnak. A sorozat első részében megvizsgáljuk, hogy miként tudunk egy XML állományt egy script-ből betölteni egy HTML-kontrolba, valamint hogyan tudjuk lekérdezni az adott XML egy tetszőleges csomópontjának elemeit.

A mellékelt példa megnyitása előtt szükséges egy DOMDocument01 nevű virtuális könyvtár létrehozása, mely a példa könyvtárára mutat. Ehhez nyissa meg a mappa Tulajdonság ablakát, és itt a Webmegosztás lapon engedélyezze a mappa megosztását olvasási és parancsfájlok futtatási jogával. A MSXML 4.0 Service Pack 2 telepítéséhez olvassa el a cikk Bevezetés című szakaszát.
Bevezetés
A csomag, mely sok javítást tartalmaz, és jelentős fejlesztésen ment keresztül, a cikk írásakor a következő címről volt letölthető:
http://www.microsoft.com/downloads/details.aspx?FamilyID=3144b72b-b4f2-46da-b4b6-c5d7485f2b42&displaylang=en#filelist
A cím azóta természetesen meg is változhatott. Amennyiben a komponenst több eszközből és fejlesztőkörnyezetből kívánjuk elérni, ajánlatos letölteni a teljes változatot, mely msxml.msi néven kerül merevlemezünkre, és a MSXML 4.0 SDK összetevőt is tartalmazza, mely dokumentációt és jelentős segítséget nyújt a fejlesztéshez.
A Software Development Kit (SDK) alapértelmezésben nem installálódik. Ehhez a Custom telepítési módot kell választanunk, és gondoskodnunk kell az összetevő kijelöléséről.
A telepítés után a Windows rendszermappájába három állomány kerül: msxml4.dll, msxml4a.dll, és msxml4r.dll. Ezek közül az első regisztrálódik a Rendszerleíró adatbázisban.
A COM komponens bejegyzésének létezését ellenőrizhetjük a Visual Studio.NET segítségével is. Ebben az esetben meg kell nyitnunk a referencia hozzáadásakor felbukkanó dialógusablakot, és a COM komponensek listájában meg tudjuk keresni a Microsoft XML, v4.0 nevű elemet, mely az msxml4.dll állományra mutat.
A csomag osztályai
A csomagban elérhető komponens több szabvány mellett tartalmazza a Document Object Model (DOM) implementációját is, hogy támogatást nyújtson az XML adatstruktúrával történő munkához. A megvalósítás teljes egészében a W3C DOM szabványára épül.
A csomag osztályainak felhasználásával tökéletesen tudunk kliens-oldali Script-ből vagy Windows Script Host (WSH) parancsállományból XML állományt felépíteni, a csomópontok közt navigálni vagy frissíteni annak tartalmát, illetve transzformálni azt.
A cikksorozat első részében a DOMDocument osztállyal ismerkedünk meg, mely az alaposztálya a DOM implementációnak.
DOMDocument osztály
A WebForm1.aspx lap betöltődésekor egy szövegmezőbe olvassuk a mellékelt products.xml állomány tartalmát. Az állomány a MS SQL Server beépített Northwind adatbázis Products táblájának egy részletét tartalmazza. Ennek érdekében csupán arra van szükségünk, hogy – JScript nyelvet használván a kliens-oldali Script-ben – egy új objektumot hozzunk létre az ActiveXObject konstruktorral. A létrehozás módja a következő:
var xmldoc = new ActiveXObject("Msxml2.DOMDocument.4.0");
Beállítjuk, hogy az objektum ellenőrizze az XML állomány formátumának helyességét. Erre a validateOnParse property alkalmas.
xmldoc.validateOnParse = false;
A betöltés pedig csak egyetlen lépés, akár csak a .NET Framework XmlDocument osztályának segítségével a szerver-oldali kódban.
xmldoc.load("products.xml");
A DOMDocument osztály számtalan property-vel rendelkezik. A feladat szempontjából az XML property az, melynek segítségével az állomány tartalmát a szövegmezőbe tölthetjük.
document.all.TextBox1.innerText = xmldoc.xml;
A szövegmező alatti ComboBox kontrolba betöltjük az XML állomány <ProductID></ProductID> tagjai közt megtalálható termékazonosítót, melyre majd rákeresünk a feladat második részében.
Elsőként lekérdezzük az állomány gyökérelemét.
root = xmldoc.documentElement;
Majd végigmegyünk ennek gyermekcsomópontjain és mindegyik <Product></Product> csoportból kivesszük a fenti tag értékét, és a listába (SELECT objektum) helyezzük.
for (var i=0;i<root.childNodes.length;i++)
{
  o = document.createElement("OPTION");
  o.text = root.childNodes.item(i).childNodes.item(0).text;
  document.all.ComboBox1.options.add(o);
}
Látható, hogy elsőként készítünk egy-egy OPTION elemet, majd ennek TEXT property-jében helyezzük el az adott számot, és az objektumot felfűzzük a listára.
A feladat második részében egy keresést végzünk az XML-ben. A nyomógomb megnyomásakor lefut a GetProduct függvényünk, melyben megkeressük az XML állomány azon elemét, melynek a termékazonosítója a listából kiválasztott szám.
for (var i=0;i<root.childNodes.length;i++)
{
  if (root.childNodes.item(i).childNodes.item(0).text == document.all.ComboBox1.options.item(document.all.ComboBox1.selectedIndex).innerText)
  {
    document.all.TextBox2.innerText = root.childNodes.item(i).childNodes.item(1).text;
  }
}
Minden egyes gyermekcsomópont TEXT property-je tartalmazza az adott csomópont szövegét, így elegendő azt összevetni a lista adott elmével.

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2003 évkönyv 618. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |