Java XML

Ezennel látogatóim száma túllépte a bűvös 1000 szamot. Köszönöm mindenkinek, aki megnézte ezt az oldalt, külön köszönet annak, aki vissza is tért időnként. Kérlek, amennyiben mármi ötletetek, megjegyzésetek, véleményetek van, vagy hibát találtok az oldalamon, jelezzétek. Esetleg ha valaki hostolni is tudná az oldalt, azt is megköszönném. Oldalt kitettem linkeket a cikkeimre, fel is került egy újabb, mely az Apache ObJectRelationalBridge (OJB) köztes rétegről szól. Vigyázzatok, a cikkek csak részletek, a teljesehez írjatok levelet!

A Sun-nál van egy remek cikk arról, hogyan fejlesszünk olyan kliens programot (Swing felülettel), mely webszolgáltatásokat vesz igénybe. Példaként az Amazon webszolgáltatását használja, mellyel az adatbázisában turkálhatunk. A megoldáshoz Sun ONE Studio 4 fejlesztőkörnyezetet használ.

Egy másik cikk a JAXB (Java Architecture for XML Binding) arhitektúráról szól. Imádom az XML-hez és webszolgáltatásokhoz tartozó 3, 4 esetleg 5 betűs rövidítéseket. Egyik konferencián volt, hogy látszik, hogy a számítástechnika fejlődik, hiszen a 3 betűsekről már áttérünk a több betűsekre.

A legegyszerűbb megoldás az XML adatok feldolgozására a Java API for XML Processing, mely tartalmaz két feldolgozási módot is, úgymint a Simple API for XML, vagy a Document Object Model. Valószínű sokan dolgoztak már ezzel, a SAX folyamatosan olvassa az XML dokumentumot, és tag, attribútum, vagy tag-ek közötti karakterek esetén egy eseményt generál, melyet a programnak kell feldolgoznia, így állítani elő a szükséges objektumokat. A SAX nem tart semmit a memóriában, szekvenciáliasan, pufferelve olvassa a fájlt, így elég gyors, de sok kézimunkát igényel, hiszen nekünk kell tárolni, hogy most épp melyik objektumhoz tartozó adatokat olvassuk be, stb… A DOM ezzel szemben beolvassa az egész dokumentumot, és egy fát épít fel, mely csomópontonként tartalmazza a tag-eket, attribútumokat. Ez sok memóriát foglal, de egyszerűsíti a feldolgozást, hiszen az egész XML feldolgozás egy fabejárássá alakul át.

A JAXB még egy ennél magasabb absztrakciós szintet képvisel, ugyanis itt az objektumok leképzése nem manuálisan történik programból, hanem egy sémával tudjuk megadni. Tehát először rendelkezésünkre áll egy XML fájl, annak megadunk egy sémát, hogy milyen objektummá képezze le. Ezután egy utility segítségével osztályt generálhatunk a sémából, és ezután már használhatjuk mindkét irányú lepépzést. Egyrészt az XML dokumentumokból automatikusan generálhatunk egy objektum fát (azokból az objektumokból, melyeket az előbb generáltunk), illetve az objektumfából generálhatunk egy XML fájlt.