Az XML Mapper segédprogram használatát bemutató cikksorozat második részében annak járunk utána, hogyan készíthetünk egy tetszőleges szerkezetű XML dokumentumból szabványos adatcsomagot (DataPacket) előállító transzformációs fájlt. A példában egy általunk kialakított XML dokumentumból állítunk elő egy DBGrid-ben megjeleníthető adatkészletet.
XML dokumentumból adatcsomagot előállító transzformációs fájl készítése
Indítsuk el az XML Mapper segédprogramot és a Transformation (középső) ablakban a Mapping lapon kapcsoljuk be az XML to Datapacket kapcsolót.
Ezután a baloldali ablakban nyissuk meg a konvertálandó XML dokumentumot. Ehhez kattintsunk jobb gombbal az ablakban és válasszuk az OpenXML document menüpontot. A program betölti a dokumentumot és megjeleníti annak szerkezetét.
Ezután válasszuk ki a Mapping Pane ablak Node Properties fülét, ahol a kiválasztott csomópont adatait szerkeszthetjük. Mivel az XML dokumentumban nincsenek rögzítve az adatkészletekben szereplő mezők tulajdonságai, ezért ezeket ebben a tulajdonságszerkesztőben állíthatjuk be. A következő tulajdonságokat tudjuk beállítani:
Tulajdonság |
Jelentés |
Attribute Name |
A kiválasztott attribútum csomópont neve. |
Constant Value |
Ha ez a tulajdonság be van állítva (true), akkor a csomópont mindig ugyanazt a konstans értéket tartalmazza. Ebben az esetben ez a csomópont akkor is bekerül az XML dokumentumba, ha a konvertálandó adatcsomag nem tartalmazza. |
Data Format |
Az adattípushoz tartozó adatformátumot állíthatjuk be ebben a mezőben. Az adatformátumot a legördülő listából választhatjuk ki. |
Data Type |
A csomópontok adattípusa alapértelmezetten mindig string. Ha ettől eltérő adattípust akarunk az adatkészletben létrehozni, akkor azt ebben a mezőben adhatjuk meg. |
Default Value |
Ebben a mezőben megadhatunk egy alapértelmezett értéket, ami akkor lesz a csomópont értéke, amikor üres adatot kap az adatcsomagból. |
Enumeration |
Ha a csomópont értéke csak meghatározott elemeket tartalmazhat, akkor azokat az elemeket megadhatjuk ebben a mezőben. Az adatcsomagban előforduló minden értékhez hozzárendelhetünk egy olyan értéket, ami az XML dokumentumban fog megjelenni. Az egyes értékeket NodeValue=FieldValue formában kell megadni, az egyes érték párokat szóközzel kell elválasztani egymástól. Ha például a csomópontban Yes és No értékeket tárolunk, és ezeket az értékeket z adatcsomagban egy logikai mezőben akarjuk tárolni, akkor a mezőben a következőket kell megadni: Yes=True No=False. |
In Primary Key |
Megadhatjuk, hogy a mező szerepel az elsődleges kulcsban, vagy sem. |
Mapped Name |
A csomópontnak megfelelő adatkészlet mező neve. |
Max Length |
A mezőben tárolható adat maximális hossza. Nem minden adattípusnál adható meg. |
Max Occurs |
Ha az elem tömb típusú, akkor ebben a mezőben adhatjuk meg, hogy a tömb maximum hány elemet tartalmazhat. Az elemek típusát a Data Type mezőben megadott adattípus határozza meg. |
Min Occurs |
Ha az elem tömb típusú, akkor ebben a mezőben adhatjuk meg, hogy a tömbnek minimum hány elemet kell tartalmaznia. Az elemek típusát a Data Type mezőben megadott adattípus határozza meg. |
Nested |
Ebben a mezőben megadhatjuk, hogy a kiválasztott csomópont ismétlődhet-e az XML dokumentumban (beágyazott csomópontok). A beágyazott csomópontok rekordként fognak szerepelni az adatcsomagban. Ez a tulajdonság csak elem, és beágyazott csomópontoknál látható. |
Node Name |
A kiválasztott csomópont neve. |
Sample Value |
Ebben a mezőben megadhatunk egy minta értéket, amit akkor használ, amikor elkészít egy példa dokumentumot, és más adatok nem állnak rendelkezésre. |
Value Required |
Ebben a mezőben beállíthatjuk, hogy a mezőnek kötelezően kell-e adatot tartalmaznia. |
Ha beállítottuk a csomópontok tulajdonságait, váltsunk vissza a Mapping ablakba. A Create Datapacket As mezőben négyféle lehetőségünk van adatcsomagok előállítására. Ezek sorban a következők:
- Client Dataset: egy teljes kliens adatkészletet állít elő, amit ugyanúgy kezelhetünk majd, mint egy normál adatkészletet;
- Query Parameters: az előállított adatcsomag egy lekérdezés paramétereit fogja tartalmazni, amelyeket az XMLTransformClient komponenssel használhatunk fel;
- Insert Delta: az adatcsomag az adatkészletbe felveendő rekordok adatait tartalmazza;
- Delete Delta: az adatcsomag az adatkészletből törlendő rekordok adatait tartalmazza;
Válasszuk ki a megfelelőt, és kattintsunk a Create and Test Transformation gombra. Ha mindent jól csináltunk, akkor a megjelenő ablakban egy DBGrid-ben láthatjuk az XML dokumentumban tárolt adatokat. Ezzel együtt elkészítettük a transzformációs fájlt is. Ha az XML dokumentum nem tartalmaz adatokat, akkor csak egyetlen rekord jelenik meg a tesztadatokkal.
A transzformációs fájlt előállíthatjuk a Create menü Transformation (Ctrl+T) menüpontjával is. Miután elkészítettük a transzformációs fájlt, mentsük el a File/Save/Transformation menüponttal.
Most már megvan a transzformációs fájlunk, nézzük hogyan tudjuk ezt felhasználni ahhoz, hogy az XML dokumentumot megjelenítsük egy DBGrid-ben. Ehhez szükség lesz egy DataSource, egy ClientDataSet és egy XMLTransformProvider komponensre. DataSource komponenst hozzárendeljük a DBGrid-hez, és a ClientDataSet komponenshez. A ClientDataSet komponens ProviderName property-jében kell megadnunk az XMLTRansformProvider komponenst. Ez a komponens fogja az XML dokumentumot adatcsomaggá alakítani, amit továbbít a ClientDataSet komponensnek. Az XMLDataFile property-ben kell megadni az XML dokumentumot, a TransformRead property TransformationFile property-jében pedig a transzformációs fájl nevét az elérési útvonallal együtt. Innentől kezdve minden automatikusan történik.
XML Mapper cikksorozat