Java Architecture for XML Binding
Java Architecture for XML Binding (JAXB) позволяет Java разработчикам ставить в соответствие Java классы и XML представления. JAXB предоставляет две основные возможности: маршаллирование Java объектов в XML и наоборот, т.е. демаршализация из XML обратно в Java объект. Другими словами, JAXB позволяет хранить и извлекать данные в памяти в любом XML-формате, без необходимости выполнения определенного набора процедур загрузки и сохранения XML. Он похож на xsd.exe
и XmlSerializer в .NET Framework.
JAXB особенно полезен, когда спецификация является сложной и меняющейся. В этом случае, постоянные изменения схемы XML определений для синхронизации их с определениями Java могут занять много времени и быть подвержены ошибкам.
JAXB является частью Java SE платформы и является одной из API в Java EE плаиформе, и является частью Java Web Services Development Pack (JWSDP). Он также является базисом для WSIT. JAXB является частью SE версии 1.6.
JAXB 1.0 біл разработан в рамках Java Community Process как JSR 31.[1] Как и в 2006, JAXB 2.0 разрабатывается в рамках JSR 222.[2] Эталонная реализация (информатика) для этих спецификаций доступна как CDDL open source license в java.net.
Использование
The tool "xjc" can be used to convert XML Schema and other schema file types (as of Java 1.6, RELAX NG, XML DTD, and WSDL are supported experimentally) to class representations.[3] Classes are marked up using annotations from javax.xml.bind.annotation.* namespace, for example, @XmlRootElement and @XmlElement. XML list sequences are represented by attributes of type java.util.List. Marshallers and Unmarshallers are created through an instance of JAXBContext.
In addition, JAXB includes a "schemagen" tool which can essentially perform the inverse of "xjc", creating an XML Schema from a set of annotated classes.
Default data type bindings
The table below lists the mappings of XML Schema (XSD) data types to Java data types in JAXB.[4]
XML Schema Type | Java Data Type |
---|---|
xsd:string | java.lang.String |
xsd:integer | java.math.BigInteger |
xsd:positiveInteger | java.math.BigInteger |
xsd:int | int |
xsd:long | long |
xsd:short | short |
xsd:decimal | java.math.BigDecimal |
xsd:float | float |
xsd:double | double |
xsd:boolean | boolean |
xsd:byte | byte |
xsd:QName | javax.xml.namespace.QName |
xsd:dateTime | javax.xml.datatype.XMLGregorianCalendar |
xsd:base64Binary | byte[] |
xsd:hexBinary | byte[] |
xsd:unsignedInt | long |
xsd:unsignedShort | int |
xsd:unsignedByte | short |
xsd:unsignedLong | java.math.BigDecimal |
xsd:time | javax.xml.datatype.XMLGregorianCalendar |
xsd:date | javax.xml.datatype.XMLGregorianCalendar |
xsd:g | javax.xml.datatype.XMLGregorianCalendar |
xsd:anySimpleType (for xsd:element of this type) | java.lang.Object |
xsd:anySimpleType (for xsd:attribute of this type) | java.lang.String |
xsd:duration | javax.xml.datatype.Duration |
xsd:NOTATION | javax.xml.namespace.QName |
Versions
See also
- XML data binding
- JiBX – one of the fastest XML data binders [7][8]
- XMLBeans – a similar and complementary technology to JAXB from Apache Software Foundation
- TopLink – an object to relational and object to XML mapper from Oracle that supports JAXB 1.0
- EclipseLink MOXy – open source implementation of JAXB and object XML mapping services under the Eclipse Foundation
- Liquid XML Studio - Commercial tool for XML data binding code generation
References
- ↑ JSRs: Java Specification Requests. JSR 31: XML Data Binding Specification . Дата обращения: 15 февраля 2011.
- ↑ JSRs: Java Specification Requests. JSR 222: Java Architecture for XML Binding (JAXB) 2.0 . Дата обращения: 15 февраля 2011.
- ↑ xjc - Java Architecture for XML Binding . Дата обращения: 15 февраля 2011.
- ↑ Using JAXB Data Binding: Standard Data Type Mapping .
- ↑ Java SE7: Java XML Technology Enhancements . Дата обращения: 21 марта 2012.
- ↑ Java SE 6: Features and Enhancements . Дата обращения: 21 марта 2012.
- ↑ Dennis Sosnoski. XML and Java technologies: Data binding, Part 2: Performance . Дата обращения: 15 февраля 2011.
- ↑ XML Binding Frameworks in the Context of Service-Oriented Architecture . Дата обращения: 15 февраля 2011.
External links
- JAXB home page Reference Implementation on Project GlassFish
- previous JAXB home page
- A JAXB Tutorial by Wolfgang Laun
- JSR 222 (JAXB 2.0)
- JSR 31 (JAXB 1.0)
- The Java EE 5 Tutorial - Binding between XML Schema and Java Classes JAXB chapter of the Java EE 5 Tutorial
- JAXB Wizard
- Using JAXB with complex schema guide and JDeveloper.