Ez a lap egy ellenőrzött változata
AJava API forXML Processing vagyJAXP egyike aJava XML programozásiAPI-jának, amely biztosítja azXML dokumentumok validációjához és elemzéséhez szükséges képességeket.
Három alapvető elemzési interfész létezik:
Ezen elemzési interfészek mellett létezik egy másik API is, amely azXSLT interfészt biztosít az adat és strukturális transzformációkhoz az XML dokumentumokon.
A JAXP-tJava Community Process keretein belül fejlesztették ki a JSR 5 (JAXP 1.0) és JSR 63 (JAXP 1.1 és 1.2) alatt.
Java SE verzió | Csomagolt JAXP verzió |
---|---|
1.4 | 1.1 |
1.5 | 1.3 |
1.6 | 1.4 |
1.6 | 1.4 |
1.7 | 1.4.5 |
1.7.40 | 1.5 |
1.8 | 1.6 |
2008. február 12-én a JAXP 1.3-as verziója elérte azéletciklusa végét.
2010. szeptember 3-án kiadták a JAXP 1.4.4 verzióját.
A DOM interfészt talán a legkönnyebb megérteni: elemzi az egész XML dokumentumot és elkészíti a dokumentum komplett reprezentációját a memóriában, felhasználva azokat az osztályokat, melyek modellezik azt a koncepciót, amely megtalálható aDocument Object Model(DOM) Level 2 Core Specification-ban.
A DOM elemzőtDocumentBuilder
(dokumentum építő)-nek hívják, mivel felépíti a memóriában aDocument
(dokumentum) reprezentációját. Ezt a dokumentum építőt (javax.xml.parsers.DocumentBuilder
) ajavax.xml.parsers.DocumentBuilderFactory
készíti el.ADocumentBuilder
létrehoz egyorg.w3c.dom.Document
példányt, ami egy fa struktúra és csomópontokkal reprezentálja az XML dokumentumot. Minden fa csomópont a struktúrában megvalósítja aorg.w3c.dom.Node
interfészt. Sok különböző típusú fa csomópont létezik, attól függően, hogy az XML dokumentum rész éppen milyen adatot reprezentál.
A legfontosabb csomópont típusok a következők:
Azorg.w3c.dom
java csomagJavadoc dokumentációjában megtalálható a teljes lista a csomópont típusokról.
A SAX parser-tSAXParser
reprezentálja, melyet ajavax.xml.parsers.SAXParserFactory
hoz létre. A DOM parser-től eltérően, a SAX parser nem készíti el a memóriában az XML dokumentum reprezentációját, így gyorsabb és kevesebb memóriát is használ. E helyett, a SAX parser informálja az XML dokumentum struktúra klienseit callback hívásokkal, amelyeket,org.xml.sax.helpers.DefaultHandler
példányán egy metódus hívásával biztosít a parser számára. A dokumentum ilyen módon való elérésétXML Streaming-nek hívjuk.
ADefaultHandler
osztály megvalósítja aContentHandler
interfészt, és aErrorHandler
interfészt,DTDHandler
interfészt, és azEntityResolver
interfészt.A legtöbb kliens számára azContentHandler
interfészben definiált metódusok megvalósítása az érdekes, melyek akkor hívódnak meg, amikor a SAX értelmező észreveszi a megfelelő elemet az XML dokumentumban. Az interfész legfontosabb metódusai a következők:
startDocument()
ésendDocument()
metódusok meghívódnak az XML dokumentum feldolgozásának kezdeténél és végénél.startElement()
ésendElement()
metódusok meghívódnak az XML dokumentum elem feldolgozásának kezdeténél és végénél.characters()
metódus that meghívódik a szöveges adat tartalmakra, melyek az XML dokumentum elem kezdeti és vég tag-jai helyezkednek el.A kliensek aDefaultHandler
egy leszármazott osztályát nyújtják, melyek felüldefiniálják a ezeket metódusokat és feldolgozzák az adatokat. Ezek tartalmazhatnak pl. adat tárolást adatbázisban vagy adat kiírást stream-ekre.
Az értelmező működése során, az értelmezőnek szüksége lehet külső dokumentumok elérésére. Lehetséges lokális gyorsítótárban tárolni a gyakran használt dokumentumokatXML Catalog segítségével.
Ezt 2000 májusában a Java 1.3-mal vezették be.[1]
AStAX-t a DOM és a SAX interfész közti középútnak tervezték. Azaz a programozott belépési pont a kurzor, ami a dokumentumon belüli pontot reprezentálja. Az alkalmazás mozgatja kurzort előre, szükség szerint kiszedi az információt a parserből. Ez jelentősen különbözik egy eseményvezérelt API-tól - amilyen pl. a SAX -, amely adatot küld az alkalmazásnak és elvárja az alkalmazástól, hogy állapotát megőrizze az események közötti időben és amennyire szükséges nyomon kövesse a helyzetét a dokumentumon belül.
AzXMLStylesheetLanguage forTransformations (azaz XML transzformációs stíluslap nyelv), vagyXSLT segítségével az XML dokumentumok konvertálhatók más adatformátumokra. A JAXP interfészeket biztosít ajavax.xml.transform
csomagban, mely biztosítja az alkalmazásoknak, hogy XSLT transzformációkat hívhassanak. Ezeket az interfészeket eredetileg TrAX (Transformation API for XML) névre keresztelték, és egy informális közreműködés eredményeként jött létre számos Java XSLT feldolgozó fejlesztője között.
Az interfészek főbb funkciói:
ASource (forrás) és aResult (eredmény) a két absztrakt interfész, amelyet a kiment és a bemenet transzformációk reprezentálására definiáltak. Ez nem hagyományos használata a Java interfészeknek - habár, nincs elvárás, hogy egy feldolgozó elfogadjon bármely osztályt, amely megvalósítja az interfészt - minden feldolgozó megválaszthatja mely típusú Source- és Result-ot készít elő a feldolgozáshoz. A gyakorlatban minden JAXP feldolgozó 3 fajta sztenderd forrást (DOMSource
,SAXSource
,StreamSource
), 3 fajta sztenderd eredményt (DOMResult
,SAXResult
,StreamResult
) támogat. Természetesen lehetséges más saját megvalósítás is.
Ez a szócikk részben vagy egészben aJava API for XML Processing című angol Wikipédia-szócikkezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.