Java Architecture for XML Binding ( JAXB ) permite dezvoltatorilor Java să mapeze clase Java și reprezentări XML . JAXB oferă două caracteristici principale: distribuirea obiectelor Java în XML și invers, adică dezbinarea din XML înapoi la un obiect Java. Cu alte cuvinte, JAXB vă permite să stocați și să preluați date în memorie în orice format XML fără a fi nevoie să efectuați un set specific de proceduri de încărcare și salvare XML. Este similar cu XmlSerializer din .NET Framework . xsd.exe
JAXB este util în special atunci când specificația este complexă și schimbătoare. În acest caz, schimbarea constantă a schemei XML a definițiilor pentru a le menține sincronizate cu definițiile Java poate fi consumatoare de timp și predispusă la erori.
JAXB face parte din platforma Java SE și este unul dintre API -urile din platforma Java EE și face parte din Java Web Services Development Pack (JWSDP). Este, de asemenea, baza pentru WSIT . JAXB face parte din versiunea SE 1.6.
JAXB 1.0 a fost dezvoltat în cadrul procesului comunitar Java ca JSR 31. [1] Ca și în 2006, JAXB 2.0 este dezvoltat sub JSR 222. [2] Implementarea de referință pentru aceste specificații este disponibilă ca licență CDDL open source pe java.net .
Instrumentul xjc poate fi utilizat pentru a converti schemele XML și schemele altor tipuri de fișiere (începând cu Java 1.6, RELAX NG , XML DTD și WSDL sunt acceptate experimental) în reprezentări de clasă. [3] Clasele sunt marcate cu adnotări din spațiul de nume javax.xml.bind.annotation .* , cum ar fi @XmlRootElement și @XmlElement . Secvențele liste XML sunt reprezentate de atribute de tip java.util.List . Serializatoarele și deserializatoarele sunt create printr-o instanță JAXBContext
În plus, JAXB include un instrument „ schemagen ” care poate face în esență inversul „ xjc ”, generând o schemă XML dintr-un set de clase adnotate.
Următorul tabel listează mapările tipurilor de date XML Schema (XSD) și ale tipurilor de date Java în JAXB. [patru]
Tipul de schemă XML | Tip de date Java |
---|---|
xsd:șir | java.lang.string |
xsd: întreg | java.math.BigInteger |
xsd:positiveInteger | java.math.BigInteger |
xsd:int | int |
xsd: lung | lung |
xsd: scurt | mic de statura |
xsd: zecimal | java.math.BigDecimal |
xsd:float | pluti |
xsd:dublu | dubla |
xsd: boolean | boolean |
xsd: octet | octet |
xsd:QName | javax.xml.namespace.QName |
xsd:dateTime | javax.xml.datatype.XMLGregorianCalendar |
xsd:base64Binary | octet[] |
xsd:hexBinary | octet[] |
xsd: unsignedInt | lung |
xsd:unsignedShort | int |
xsd: unsignedByte | mic de statura |
xsd:unsignedLong | java.math.BigDecimal |
xsd: timp | javax.xml.datatype.XMLGregorianCalendar |
xsd: data | javax.xml.datatype.XMLGregorianCalendar |
xsd:g | javax.xml.datatype.XMLGregorianCalendar |
xsd: anySimpleType (pentru elemente de acest tip) | java.lang.Object |
xsd: anySimpleType (pentru atribute de acest tip) | java.lang.string |
xsd: durata | javax.xml.datatype.Duration |
xsd:NOTAȚIE | javax.xml.namespace.QName |