Ez - archiv

Feldolgozása egy XML dokumentum felhasználásával XPath és XSLT

Ez a cikk ismerteti, hogyan csökkenthető a bonyolultsága a kódot Java feldolgozásakor XML dokumentumok használatával XPath és XSLT.

Extensible Markup Language (XML) bizonyosan az egyik legizgalmasabb modern technológia. Bár a koncepció jelölőnyelv nem új, XML bizonyult különösen vonzó a Java programozók és az interneten. Java API for XML elemző (JAXP; lásd a forrásokat.) Meghatározott közelmúltban Java Community Process közösség, nyilván létrejöttéhez vezet az XML dokumentumok eléréséhez univerzális interfész. W3C le az úgynevezett Document Object Model (DOM), amely arra szolgál, mint egy szabványos interfészt kínál az XML dokumentumok egy fa hierarchia, mivel egy egyszerű API for XML (SAX) olyan programszerű módon szekvenciális feldolgozás az XML dokumentum alapján az esemény modell. Mindkét szabvány (SAX, ahol a standard de facto) kiegészítik JAXP. Együtt a három szabványos API hatékonyan támogatja feldolgozásához XML dokumentumok Java, és azok alkalmazását ismertetik számos könyvben.

Ez a cikk ismerteti a feldolgozásuk módját XML dokumentumok, amelyek túlmutatnak a standard API Java, ezekre a célokra. Látni fogjuk, hogy sok esetben az XPath és XSLT egy egyszerűbb, sokkal elegánsabb módon megoldani a feladatokat, az alkalmazást. Egyszerű példa, összehasonlítjuk a döntés alapján a tiszta Java kód XML a határozatot, XPath és / vagy XSLT.

XSLT és XPath szerepelt a leírásban az Extensible Stylesheet Language (XSL) (lásd a forrásokat.). XSL három részből áll: a leírás nyelvét XSL XSL-szűrők (XSLT) és az XML Path (XPath) nyelvet. XSL - nyelv az XML dokumentumok ez tartalmazza a meghatározás, amely szerint az adatok objektumok átszerkesztett XML dokumentum a kívánt képi ábrázolás. XSLT meghatároz egy utasítást lehet átalakítani egy XML dokumentum egy másik. Feltételezhetjük, hogy az XSLT egy XSL nettó adat objektumokat. XPath nyelvet használják speciális szakaszok egy XML dokumentum és felhasználásra szánják az XSLT.

Később ebben a cikkben azt feltételezzük, hogy az olvasó ismeri az alapokat az XML és XSLT, és az API DOM. (Az erre vonatkozó információk kínálunk, hogy megismerjék a források listáját végén cikket.)

Programkódpéldákat mutatja be ezt a cikket állította össze, és hibakeresést az XML-Parzer cég Apache Xerces, és a processzor XSL Xalan ugyanaz a cég (lásd a forrásokat.).

Nyilatkozat a problémát

Azonban az XML számos egyéb funkcióval, mint egy egyszerű osztály modell és a kilátás szempontjából a végső felhasználás szempontjából a probléma. Jelenleg minden szélesebb körben alkalmazható komponensek (például, komponensek kifejlesztett szabvány szerint EJB), amelyeket fel lehet használni a szerelési alkalmazás, és ezáltal növelje a termelékenységet. Újrafelhasználása alkatrészek javítható a formázási adatok feldolgozása ezek az alkatrészek, akiknek a szokásos módon. Sőt, mi várható növekedése a komponensek száma használó XML leírni az interfészeket.

Mivel az adatok XML formátumú függetlenek a nyelvi lehet használni őket olyan esetekben, amikor a kérelem az ügyfél bizonytalan vagy, ha szükséges, hogy biztosítsák annak függetlenségét a szerverről. Például a környezetben B2B kapcsolat a két fél részt vesz az adatcsere a konkrét Java objektum interfész nem lehet elfogadható. Ezek a követelmények előadott új technológiák, mint a Simple Object Access Protocol (SOAP) (lásd a forrásokat.).

Minden ilyen esetben egy dolog közös: az adatok tárolása XML dokumentumok és kell feldolgozni egy alkalmazást. Például egy olyan alkalmazás, amely különböző komponensek a különböző gyártók valószínűleg szerkezetének megváltoztatása az adatok (XML), annak érdekében, hogy megfelel a követelményeknek a kérelem és megfelelnek bizonyos követelményeknek.

A fenti kód Java, biztosan megfelel ezeknek a követelményeknek. Sőt, van egy egyre növekvő számú eszköz, amelynek segítségével a felhasználó képes átalakítani az XML dokumentumot JavaBean és vissza, hogy egy egyszerű módszer az adatok feldolgozása a programban a Java. Sok esetben azonban a kérelem vagy annak bármely funkciójának csak kezeli egy vagy több XML dokumentumok kapott bemeneti és átalakítja azokat más XML dokumentumok a kimeneten. Ezekben az esetekben a stílusok egy jó alternatíva, amint azt majd később derül ki ebben a cikkben.

XPath használata elemei fellelhetők az XML dokumentum

Mint már említettük, az XPath nyelv használható keresni az egyes részekhez egy XML dokumentum. Ez azt jelenti, hogy azt használják XSLT szűrő, de semmit sem akadályoz meg abban, használja azt a Java program, hogy elkerüljék hosszadalmas ismétlések révén hierarchiájának DOM elemeket. Sőt, tudjuk, hogy ez a munka XSLT / XPath processzor minket. Gondold át, hogyan kell végrehajtani egy ilyen munkát.

Tegyük fel, hogy a felhasználási környezet egy XML reprezentációja a felhasználó az eredeti szöveg a dokumentum (esetleg átalakítás után olyan szűrő). A felhasználó a változtatásokat az adatokat, és csökkenti a terhelést a hálózaton küldi vissza csak a megváltozott felvételi kérelmet. Az alkalmazás megkeresi a forrás XML dokumentum fragmentum, amelyben a módosítás, és helyére az új adatokkal.

Most arra van szükség, hogy írjon egy kódot a Java, amely segít bennünket abban, hogy azonosítsa a elemet

a forrást, amelynek tartalmát ki kell cserélni az adatokat a megváltozott elem. Hadd illusztráljam ezt az eljárást megvalósító findAddress (). Kód, amely az alábbiakban látható. Vegye figyelembe, hogy csökkenteni kód méretének például hibakezelés elhagyásával.

A fenti kód valószínűleg optimalizálni lehetne, de nyilvánvaló, hogy a végrehajtás az iterációk a DOM fában lehet unalmas és hibára hajlamos. Nézzük a lehetőségét, hogy egy egyszerű XPath utasításokat, hogy megtalálják a cél csomópont. Utasítás tűnhet az alábbiak szerint:

Most már tudjuk átírni a korábbi módszerrel. Ezúttal az általunk használt XPath kifejezést kell találni a megfelelő hely, hogy minket:

A kód itt megadott nem úgy néz ki sokkal jobban, mint az előző példában, de a legtöbb a tartalmát ez a módszer lehet elrejtve az al-osztály. Az egyetlen rész, majd folyamatosan változnak - XPath kifejezés és a cél csomópont.

Ily módon tudjuk létrehozni az osztály XPathHelper. amely a következőképpen néz ki:

Miután létrehozott egy segítő osztály, akkor újra átírják a fő módszer, ami most nagyon röviden:

A helper osztály már fel lehet használni, amikor meg kell találni egy csomópont vagy csomópontok csoportjának az XML dokumentumban. A tényleges útmutató XPath is betölthető egy külső forrásból, hogy a változtatások lehet tenni a repülni, ha a szerkezeti változások az eredeti dokumentumot. Ebben az esetben nem is kell egy válogatás.

Feldolgozása egy XML dokumentum felhasználásával XSL szűrők

Bizonyos esetekben érdemes a teljes XML dokumentum feldolgozása teljes mértékben hozza egy külső szűrő XSL, bizonyos szempontból ez a folyamat hasonlít a XPath, ahogy azt az előző részben. Az XSL szűrők létrehozhat kiadási dokumentumok bemeneti csomópontok a dokumentum és az egyesület a tartalmát a tartalmát a szűrő meghatározott szabályok az utóbbi.

Például, akkor végezze el a feldolgozó példa címjegyzék egyszerűen létre egy stíluslap, amely összefogja a meglévő verzió frissített címjegyzéket, ami egy új dokumentumot a reflexió az egészet változásokat.

Itt látható egy példa egy ilyen szűrő:

Megjegyezzük, hogy a fenti stíluslap veszi a módosított adatokat a fájl neve changed.xml. Nyilvánvaló, hogy egy igazi alkalmazás, nem akarja menteni a megváltozott adatokat a fájl feldolgozása előtt őket. A megoldás erre a problémára az, hogy adjunk hozzá egy egyéni attribútumot egy elemhez

. ami azt jelzi, hogy az elem módosításra került. Ezután az alkalmazás egyszerűen hozzá a módosított adatokat az eredeti dokumentumot, és meghatározza, hogy egy külön stíluslap, amely megjeleníti a módosított rekord és a helyükbe a régi.

Most, a kérelemben meg kell létrehozni XSLTProcessor objektumot, és rendelkezésére kell bocsátania minden a munka:

következtetés

A legtöbb programozó Java, XML egy viszonylag új technológia, amely fejleszteni kell. Ez a cikk azt mutatja, hogy a kézi elemzés és feldolgozás Az XML dokumentumok egyik lehetőség, hogy tudod használni XPath kifejezéseket és XSL szűrők, hogy megszabaduljon a nagy mennyiségű feldolgozása a kódot, és ismétlések, ezáltal csökkentve kód mérete. Sőt, ebben a rendszerben, arról, hogyan kell feldolgozni az adatokat tárolják egy külső fájlt, így lehet változtatni anélkül, hogy újrafordítani az alkalmazást forrás szövegek. Használhatja a leírt mechanizmus ide a adatprezentációk webes alkalmazások, hanem fel lehet használni minden olyan esetben, ahol ez szükséges, hogy feldolgozza az XML adatokat.

Andre Tost működik egy tanácsadó szoftvermérnök az IBM fejlesztőcsapat Rochester, Minnesota. Diplomáját szakmai akadémia Stuttgart, Németország, és dolgozott különböző projektek az objektum-orientált fejlesztés az elmúlt hat évben. Ő jelenleg dolgozik a IBM WebSphere Business Components Műszaki Architecture Group, amely specializálódott az XML és XSL mechanizmusok.

Friss XML cikkek JavaWorld

További értékes XML-hez kapcsolódó források

Kapcsolódó cikkek