A Data2type GmbH XML egyszerű az XML Simple segítségével

(Kivonat Erik T. Ray és Jason McIntosh "Perl & XML" -éből)

egyszerű

Vannak emberek, akik úgy vélik, hogy az XML egy beteg elme találmánya, feltehetően azzal a céllal, hogy megsemmisítse az emberiséget. Néha megértheti. A beágyazott jelölés a kisebb-nagyobb karakterekkel és a perjelekkel nem éppen megkönnyebbülés a szem számára. Ha hozzáadjuk az elemek beágyazását, a csomóponttípusokat és a DTD-ket (amelyek olyan kellemesen egyszerűek voltak az XML-sémához képest), akkor szeretnénk, ha a CSV-fájlok ideje (vesszővel elválasztott értékek, egy sor adatsor, az egyén Az oszlopokat rögzített elválasztó jelöli), és gyászolják az elemzőjüket, a split funkciót.

Elárulunk egy titkot: Nem olyan nehéz programokat írni az XML feldolgozására. Egy teljes, eszközzel teli eset készen áll arra, hogy gondoskodjon az elemző megszámlálhatatlan bosszantó részleteiről és egy adatstruktúra létrehozásáról, egyszerű, percek alatt érthető API-kkal. Ha valóban szüksége van egy XML alkalmazás bonyolultságára és az összes díszítésre, akkor megvan, de nem kell. Az XML-mel az alkalmazás függvényében lehet olyan egyszerű, mint mélyreható dolgozni. Vannak egyszerű eszközök az egyszerű feladatokhoz is.

Ennek bemutatásához nézzünk meg egy nagyon egyszerű modult, az úgynevezett Grant McLean XML: Simple nevet. Minimális edzéssel meglepően nagy sikereket érhet el az XML feldolgozásában.

Egy tipikus program elolvas egy XML dokumentumot, megváltoztat valamit, és az eredményt visszaírja egy fájlba. Az XML: Simple pontosan ehhez a folyamathoz készült. Egyetlen függvényhívás beolvas egy XML-dokumentumot, és beágyazott hash-táblák formájában tárolja a fő memóriában. Az elemeket és az adatokat hash táblák képviselik. Miután elvégezte a kívánt módosításokat, meghív egy másik függvényt, és az eredményt fájlba írja.

Próbáljuk ki. Mint minden modulnál, először a XML: Simple programot is be kell töltenünk a programunkba a használat segítségével:

A hívással az XML: Simple a következő két függvényt határozta meg számunkra:

Ez a függvény beolvassa az XML dokumentumot egy fájlból vagy egy karaktersorozatból, és létrehoz egy adatstruktúrát, amely tartalmazza az XML dokumentum adatait és elemeit. A függvény eredménye ez az adatszerkezet hash referencia formájában.

Kivonat-hivatkozást kap egy kódolt dokumentummal, és átalakítja azt helyes XML-jelöléssé. A függvény eredménye egy szöveges karakterlánc az átalakított XML dokumentummal.

Természetesen, ha akarja, a dokumentumot a semmiből is felépítheti, ha egyszerűen "kézzel" építi ki a megfelelő adatstruktúrákat hash, tömbök és karakterláncok segítségével. Ha z. Például, ha egy fájlt először hoznak létre, erre akár szükség is lehet. Ez nem jelent problémát, csak a kör alakú utalásokat kell kerülni. Ellenkező esetben a modul nem fog megfelelően működni.

Tegyük fel például, hogy a főnökünk e-mailt akar küldeni egy csoportnak. Erre a célra használhatja a levelezőlisták kezelésére jól ismert WarbleSoft SpamChuckert. A SpamChucker többek között képes XML fájlok importálására vagy exportálására, amelyek tartalmazzák a mail címek listáját. A főnöknek különleges kérései vannak, és ez a mi esetünkben is így van: Az ügyfélneveket nagybetűvel kell írni. Szükség van egy olyan programra, amely elolvassa az XML fájlt, átalakítja a neveket nagybetűkké, majd újra elmenti a megváltozott fájlt.

Elfogadjuk a kihívást, és először megnézzük az XML fájlt, hogy megértsük annak felépítését. A következő példában egy ilyen levelezőlistát látunk.

Példa: XML dokumentum a SpamChucker levelezőlistájával

Az XML: Simple (perldoc XML: Simple) dokumentációjának gyors áttekintése után úgy érezzük, hogy képesek vagyunk megírni az alábbi példában látható szkriptet:

Példa: Szkript az ügyfelek nevének nagybetűvé konvertálásához

Ha ezt a programot futtatjuk (kissé vakmerő, mivel az adatkimenet tulajdonképpen a főnökünk felelőssége), akkor ezt a kimenetet kapjuk:

Gratulálunk! Ön megírta az első programját az XML-adatok feldolgozására, és remekül működik. Nos, szinte kiváló. A kimenet kissé eltér a vártól. Egyrészt megváltozik az elemek sorrendje, mert a hash tömbök nem kapják meg a beillesztett kulcsok sorrendjét. Ezenkívül elveszhetnek az egyes elemek közötti behúzások. Lehet ez probléma?

Érdekes ponthoz érkeztünk, ami foglalkoztat bennünket. Az egyszerűség és a teljesség ellentmondó cél. Fejlesztőként magának kell eldöntenie, hogy a jelölés mely részeinek kell pontosnak lennie, és melyikeknek nem. Néha az elemek sorrendje lesz fontos, ebben az esetben az XML: Simple nem használható. Esetleg az ellenőrzési utasításokat (PI-ket vagy feldolgozási utasításokat) is meg kell őrizni, ismét olyan eset, amikor az XML: Simple kizárt. Tehát pontosan tudnia kell, milyen modulokat használnak, és mit tudnak és mit nem. Ne feledje, hogy az eszközökről a programozás előtt kell dönteni. Esetünkben természetesen a módosított fájlt kipróbáltuk a SpamChuckerrel, minden remekül sikerült, és a főnök örült. A létrehozott dokumentum elég közel van az eredetihez, hogy megfeleljen az alkalmazás követelményeinek.

Az egyik hajlamos azt állítani, hogy az általunk végrehajtott változtatások a szemantikailag egyenértékű Dokumentum, de ez nem teljesen igaz. Az elemek sorrendje általában fontos az XML-ben. Nagyon szerencsések vagyunk, hogy ebben az esetben nagylelkű alkalmazásunk és ugyanolyan nagyvonalú végfelhasználója van, akinek viszonylag kis követelményei teljesülnek.

Gondoljon magára, mint olyan személyre, aki képes kezelni az XML-t és a Perl-t!

Természetesen csak utunk elején járunk. A könyv nagy része előttünk áll, tele tippekkel és technikákkal, amelyek segítenek az XML használatában. Nem minden XML-rel kapcsolatos feladat olyan egyszerű, mint az imént bemutatott. De semmi sem olyan bonyolult vagy nehéz, hogy a Hammer Perl nem lenne elég a vas XML-hamisításához.