A Java Architecture for XML Binding ( JAXB ) lehetővé teszi a Java fejlesztők számára Java osztályok és XML reprezentációk leképezését. A JAXB két fő funkciót kínál: a Java objektumok XML-be rendezését és fordítva, vagyis az XML-ből visszaválasztja a Java objektumokat. Más szavakkal, a JAXB lehetővé teszi az adatok tárolását és lekérését a memóriában bármilyen XML formátumban anélkül, hogy meghatározott XML betöltési és mentési eljárásokat kellene végrehajtania. Hasonló a .NET-keretrendszerben található XmlSerializerhez . xsd.exe
A JAXB különösen akkor hasznos, ha a specifikáció összetett és változó. Ebben az esetben a definíciók XML-sémájának folyamatos módosítása, hogy azok szinkronban legyenek a Java-definíciókkal, időigényes és hibás lehet.
A JAXB a Java SE platform része, és a Java EE platform egyik API -ja, valamint a Java Web Services Development Pack (JWSDP) része. Ez a WSIT alapja is . A JAXB az SE 1.6-os verziójának része.
A JAXB 1.0-t a Java Community Process alatt fejlesztették ki JSR 31 néven. [1] 2006-hoz hasonlóan a JAXB 2.0 is a JSR 222 alatt készül. [2] A specifikációk referencia megvalósítása CDDL nyílt forráskódú licencként érhető el a java.net webhelyen . .
Az xjc eszköz használható XML sémák és más fájltípusok sémáinak (a Java 1.6-tól kezdve a RELAX NG , az XML DTD és a WSDL kísérletileg támogatott) osztályábrázolásokká alakítására. [3] Az osztályokat a javax.xml.bind.annotation.* névtérből származó megjegyzésekkel jelölik , például @XmlRootElement és @XmlElement . Az XML listasorozatokat java.util.List típusú attribútumok képviselik . A szerializálók és a deszerializálók JAXBContext példányon keresztül jönnek létre
Ezenkívül a JAXB tartalmaz egy " sémagen " eszközt, amely lényegében az " xjc " fordítottját tudja végrehajtani, és egy XML-sémát generál annotált osztályok halmazából.
Az alábbi táblázat felsorolja az XML Schema (XSD) adattípusok és a Java adattípusok leképezéseit a JAXB-ben. [négy]
XML sématípus | Java adattípus |
---|---|
xsd:string | java.lang.string |
xsd: egész szám | java.math.BigInteger |
xsd:pozitívInteger | java.math.BigInteger |
xsd:int | int |
xsd:hosszú | hosszú |
xsd: rövid | rövid |
xsd: decimális | java.math.BigDecimal |
xsd:float | úszó |
xsd:double | kettős |
xsd: logikai érték | logikai érték |
xsd: bájt | byte |
xsd:QName | javax.xml.namespace.QName |
xsd:dateTime | javax.xml.datatype.XMLGregorianCalendar |
xsd:base64Bináris | byte[] |
xsd:hexBináris | byte[] |
xsd: unsignedInt | hosszú |
xsd:unsignedShort | int |
xsd: unsignedByte | rövid |
xsd:unsignedLong | java.math.BigDecimal |
xsd:time | javax.xml.datatype.XMLGregorianCalendar |
xsd: dátum | javax.xml.datatype.XMLGregorianCalendar |
xsd:g | javax.xml.datatype.XMLGregorianCalendar |
xsd: anySimpleType (ilyen típusú elemekhez) | java.lang.Object |
xsd: anySimpleType (ilyen típusú attribútumokhoz) | java.lang.string |
xsd: időtartam | javax.xml.datatype.Duration |
xsd:JEGYZÉS | javax.xml.namespace.QName |