Delphi - Az XML Mapper segédprogram

XML Mapper 2. rész

forráskód letöltése
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

Az XML Mapper segédprogram használata - XML Mapper 1. rész

Az XML Mapper segédprogram - XML Mapper 2. rész