Java Architecture for XML Binding ( JAXB ) umožňuje vývojářům Java mapovat třídy Java a reprezentace XML . JAXB poskytuje dvě hlavní funkce: seřazování objektů Java do XML a naopak, to znamená unmarshaling z XML zpět do Java objektu. Jinými slovy, JAXB vám umožňuje ukládat a načítat data do paměti v libovolném formátu XML, aniž byste museli provádět specifickou sadu procedur načítání a ukládání XML. Je podobný xsd.exea XmlSerializer v .NET Framework .
JAXB je zvláště užitečný, když je specifikace složitá a mění se. V tomto případě může být neustálá změna schématu XML definic, aby byly synchronizovány s definicemi Java, časově náročné a náchylné k chybám.
JAXB je součástí platformy Java SE a je jedním z API platformy Java EE a je součástí Java Web Services Development Pack (JWSDP). Je také základem pro WSIT . JAXB je součástí SE verze 1.6.
JAXB 1.0 byl vyvinut v rámci Java Community Process jako JSR 31. [1] Stejně jako v roce 2006 je JAXB 2.0 vyvíjen podle JSR 222. [2] Referenční implementace pro tyto specifikace je dostupná jako CDDL open source licence na java.net .
Nástroj xjc lze použít k převodu schémat XML a schémat jiných typů souborů (od verze Java 1.6 jsou experimentálně podporovány RELAX NG , XML DTD a WSDL ) na reprezentace třídy. [3] Třídy jsou označeny anotacemi z jmenného prostoru javax.xml.bind.annotation.* , například @XmlRootElement a @XmlElement . Sekvence seznamů XML jsou reprezentovány atributy typu java.util.List . Serializátory a deserializátory se vytvářejí prostřednictvím instance JAXBContext
Kromě toho JAXB obsahuje nástroj " schemagen ", který v podstatě umí opak " xjc ", generuje schéma XML ze sady anotovaných tříd.
Následující tabulka uvádí mapování datových typů XML Schema (XSD) a datových typů Java v JAXB. [čtyři]
Typ schématu XML | Typ dat Java |
---|---|
xsd:string | java.lang.string |
xsd: celé číslo | java.math.BigInteger |
xsd:positiveInteger | java.math.BigInteger |
xsd:int | int |
xsd: dlouhý | dlouho |
xsd: krátký | krátký |
xsd: desítkové | java.math.BigDecimal |
xsd:float | plovák |
xsd:double | dvojnásobek |
xsd: boolean | booleovský |
xsd: byte | byte |
xsd:QName | javax.xml.namespace.QName |
xsd:dateTime | javax.xml.datatype.XMLGregorianCalendar |
xsd:base64Binary | byte[] |
xsd:hexBinary | byte[] |
xsd: unsignedInt | dlouho |
xsd:unsignedShort | int |
xsd: unsignedByte | krátký |
xsd:unsignedLong | java.math.BigDecimal |
xsd:time | javax.xml.datatype.XMLGregorianCalendar |
xsd: datum | javax.xml.datatype.XMLGregorianCalendar |
xsd:g | javax.xml.datatype.XMLGregorianCalendar |
xsd: anySimpleType (pro prvky tohoto typu) | java.lang.Object |
xsd: anySimpleType (pro atributy tohoto typu) | java.lang.string |
xsd: trvání | javax.xml.datatype.Duration |
xsd:NOTATION | javax.xml.namespace.QName |