Java Architecture for XML Binding ( JAXB ) giver Java - udviklere mulighed for at kortlægge Java - klasser og XML - repræsentationer. JAXB har to hovedfunktioner: rangering af Java - objekter til XML og omvendt, det vil sige, at gruppere fra XML tilbage til et Java-objekt. Med andre ord giver JAXB dig mulighed for at gemme og hente data i hukommelsen i ethvert XML-format uden at skulle udføre et specifikt sæt XML-indlæsnings- og lagringsprocedurer. Det ligner xsd.exeog XmlSerializer i .NET Framework .
JAXB er især nyttig, når specifikationen er kompleks og skiftende. I dette tilfælde kan konstant ændring af XML-skemaet for definitionerne for at holde dem synkroniseret med Java-definitionerne være tidskrævende og udsat for fejl.
JAXB er en del af Java SE -platformen og er en af API'erne i Java EE-platformen og er en del af Java Web Services Development Pack (JWSDP). Det er også grundlaget for WSIT . JAXB er en del af SE version 1.6.
JAXB 1.0 blev udviklet under Java Community Process som JSR 31. [1] Som i 2006 udvikles JAXB 2.0 under JSR 222. [2] Referenceimplementeringen for disse specifikationer er tilgængelig som en CDDL open source-licens på java.net .
Xjc - værktøjet kan bruges til at konvertere XML-skemaer og skemaer af andre filtyper (fra Java 1.6 understøttes RELAX NG , XML DTD og WSDL eksperimentelt) til klasserepræsentationer. [3] Klasser er markeret med annoteringer fra javax.xml.bind.annotation.* navneområdet , såsom @XmlRootElement og @XmlElement . XML-listesekvenser er repræsenteret af attributter af typen java.util.List . Serializers og deserializers oprettes via en JAXBContext-instans
Derudover inkluderer JAXB et " schemagen " værktøj, der i det væsentlige kan gøre det omvendte af " xjc ", der genererer et XML-skema fra et sæt annoterede klasser.
Følgende tabel viser tilknytningerne af XML Schema (XSD) datatyper og Java datatyper i JAXB. [fire]
XML-skematype | Java datatype |
---|---|
xsd:streng | java.lang.string |
xsd: heltal | java.math.BigInteger |
xsd:positivtHeltal | java.math.BigInteger |
xsd:int | int |
xsd: lang | lang |
xsd: kort | kort |
xsd: decimal | java.math.BigDecimal |
xsd:float | flyde |
xsd:dobbelt | dobbelt |
xsd: boolesk | boolesk |
xsd: byte | byte |
xsd:QName | javax.xml.namespace.QName |
xsd:datoTid | javax.xml.datatype.XMLGregorianCalendar |
xsd:base64Binær | byte[] |
xsd:hexBinær | byte[] |
xsd: unsignedInt | lang |
xsd:unsignedShort | int |
xsd: unsignedByte | kort |
xsd:unsignedLong | java.math.BigDecimal |
xsd: tid | javax.xml.datatype.XMLGregorianCalendar |
xsd: dato | javax.xml.datatype.XMLGregorianCalendar |
xsd:g | javax.xml.datatype.XMLGregorianCalendar |
xsd: anySimpleType (for elementer af denne type) | java.lang.Object |
xsd: anySimpleType (for attributter af denne type) | java.lang.string |
xsd: varighed | javax.xml.datatype.Duration |
xsd:NOTATION | javax.xml.namespace.QName |