Java Architecture for XML Binding ( JAXB ) tillåter Java - utvecklare att kartlägga Java - klasser och XML- representationer. JAXB tillhandahåller två huvudfunktioner: rangering av Java - objekt till XML och vice versa, det vill säga att radera från XML tillbaka till ett Java-objekt. Med andra ord låter JAXB dig lagra och hämta data i minnet i valfritt XML-format utan att behöva utföra en specifik uppsättning XML-laddnings- och sparaprocedurer. Det liknar xsd.exeoch XmlSerializer i .NET Framework .
JAXB är särskilt användbart när specifikationen är komplex och föränderlig. I det här fallet kan det vara tidskrävande och felbenäget att ständigt ändra XML-schemat för definitionerna för att hålla dem synkroniserade med Java-definitionerna.
JAXB är en del av Java SE - plattformen och är en av API :erna i Java EE-plattformen och är en del av Java Web Services Development Pack (JWSDP). Det är också grunden för WSIT . JAXB är en del av SE version 1.6.
JAXB 1.0 utvecklades under Java Community Process som JSR 31. [1] Liksom 2006 utvecklas JAXB 2.0 under JSR 222. [2] Referensimplementeringen för dessa specifikationer är tillgänglig som en CDDL-licens för öppen källkod på java.net .
Verktyget xjc kan användas för att konvertera XML-scheman och scheman av andra filtyper (från och med Java 1.6 stöds RELAX NG , XML DTD och WSDL experimentellt) till klassrepresentationer. [3] Klasser är markerade med kommentarer från namnutrymmet javax.xml.bind.annotation.* , såsom @XmlRootElement och @XmlElement . XML-listsekvenser representeras av attribut av typen java.util.List . Serializers och deserializers skapas via en JAXBContext-instans
Dessutom inkluderar JAXB ett " schemagen "-verktyg som i huvudsak kan göra det omvända till " xjc ", och genererar ett XML-schema från en uppsättning kommenterade klasser.
Följande tabell listar mappningar av XML Schema (XSD) datatyper och Java datatyper i JAXB. [fyra]
XML-schematyp | Java datatyp |
---|---|
xsd:sträng | java.lang.string |
xsd: heltal | java.math.BigInteger |
xsd:positivtHeltal | java.math.BigInteger |
xsd:int | int |
xsd:lång | lång |
xsd: kort | kort |
xsd: decimal | java.math.BigDecimal |
xsd:float | flyta |
xsd:dubbel | dubbel |
xsd: booleskt | booleskt |
xsd: byte | byte |
xsd:QName | javax.xml.namespace.QName |
xsd:datumTid | javax.xml.datatype.XMLGregorianCalendar |
xsd:base64Binär | byte[] |
xsd:hexBinär | byte[] |
xsd: unsignedInt | lång |
xsd:unsignedShort | int |
xsd: unsignedByte | kort |
xsd:unsignedLong | java.math.BigDecimal |
xsd: tid | javax.xml.datatype.XMLGregorianCalendar |
xsd: datum | javax.xml.datatype.XMLGregorianCalendar |
xsd:g | javax.xml.datatype.XMLGregorianCalendar |
xsd: anySimpleType (för element av denna typ) | java.lang.Object |
xsd: anySimpleType (för attribut av denna typ) | java.lang.string |
xsd: varaktighet | javax.xml.datatype.Duration |
xsd: NOTATION | javax.xml.namespace.QName |