Java Architecture for XML Binding ( JAXB ) mahdollistaa Java -kehittäjien kartoittaa Java- luokkia ja XML - esityksiä. JAXB tarjoaa kaksi pääominaisuutta: Java - objektien järjestelyn XML-muotoon ja päinvastoin, eli XML- järjestyksen purkamisen takaisin Java-objektiksi. Toisin sanoen JAXB:n avulla voit tallentaa ja hakea tietoja muistiin missä tahansa XML-muodossa ilman, että sinun tarvitsee suorittaa tiettyjä XML-lataus- ja tallennustoimenpiteitä. Se on samanlainen kuin xsd.exeXmlSerializer .NET Frameworkissa .
JAXB on erityisen hyödyllinen, kun spesifikaatio on monimutkainen ja muuttuva. Tässä tapauksessa määritelmien XML-skeeman jatkuva muuttaminen niiden pitämiseksi synkronoituna Java-määritelmien kanssa voi olla aikaa vievää ja virhealtista.
JAXB on osa Java SE -alustaa ja yksi Java EE -alustan sovellusliittymistä ja osa Java Web Services Development Pack (JWSDP) -pakettia. Se on myös WSIT :n perusta . JAXB on osa SE-versiota 1.6.
JAXB 1.0 kehitettiin Java Community Processissa nimellä JSR 31. [1] Kuten vuonna 2006, JAXB 2.0:aa kehitetään JSR 222:n alla . [2] Näiden spesifikaatioiden viitetoteutus on saatavilla avoimen lähdekoodin CDDL-lisenssinä osoitteessa java.net . .
Xjc -työkalua voidaan käyttää XML-skeemojen ja muiden tiedostotyyppien skeemojen muuntamiseen (Java 1.6:sta alkaen RELAX NG , XML DTD ja WSDL ovat tuetut kokeellisesti) luokkaesityksiksi . [3] Luokat on merkitty nimiavaruuden javax.xml.bind.annotation .* huomautuksilla , kuten @XmlRootElement ja @XmlElement . XML-luettelosekvenssejä edustavat java.util.List -tyypin attribuutit . Serialisoijat ja deserialisoijat luodaan JAXBContext-instanssin kautta
Lisäksi JAXB sisältää " skeemagen "-työkalun, joka voi käytännössä tehdä käänteisen " xjc ":n luoden XML-skeeman joukosta huomautettuja luokkia.
Seuraavassa taulukossa on lueteltu JAXB:n XML Schema (XSD) -tietotyyppien ja Java-tietotyyppien yhdistäminen. [neljä]
XML Schema Type | Java-tietotyyppi |
---|---|
xsd:string | java.lang.string |
xsd: kokonaisluku | java.math.BigInteger |
xsd:positiveInteger | java.math.BigInteger |
xsd:int | int |
xsd: pitkä | pitkä |
xsd: lyhyt | lyhyt |
xsd: desimaali | java.math.BigDecimal |
xsd: float | kellua |
xsd:double | kaksinkertainen |
xsd: Boolen | boolean |
xsd: tavu | tavu |
xsd:QName | javax.xml.namespace.QName |
xsd:dateTime | javax.xml.datatype.XMLGregorianCalendar |
xsd:base64Binaari | tavu[] |
xsd:hexBinary | tavu[] |
xsd: unsignedInt | pitkä |
xsd:unsignedShort | int |
xsd: unsignedByte | lyhyt |
xsd:unsignedLong | java.math.BigDecimal |
xsd: aika | javax.xml.datatype.XMLGregorianCalendar |
xsd: päivämäärä | javax.xml.datatype.XMLGregorianCalendar |
xsd:g | javax.xml.datatype.XMLGregorianCalendar |
xsd: anySimpleType (tämän tyypin elementeille) | java.lang.Object |
xsd: anySimpleType (tämän tyypin attribuuteille) | java.lang.string |
xsd: kesto | javax.xml.datatype.Duration |
xsd:NOTATION | javax.xml.namespace.QName |