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.
Использование
Инструмент «xjc» может использоваться для конвертации XML схемы и схем других файловых типов (как в Java 1.6, RELAX NG, XML DTD, и WSDL поддерживаются экспериментально) в классовые представления.[3] Классы помечаются при помощи аннотаций из пространства имен javax.xml.bind.annotation.*, например, @XmlRootElement и @XmlElement. Последовательности XML-списков представлены атрибутами типа java.util.List. Сериализаторы и десериализаторы создаются через экземпляр JAXBContext
Кроме того, JAXB включает в себя инструмент «schemagen», который может по существу выполнять обратное к «xjc», создавая XML-схему из набора аннотированных классов.
Связывание типов данных по умолчанию
В таблице ниже перечислены отображения типов данных XML схемы (XSD) и типов данных Java в 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 (для элементов этого типа) | java.lang.Object |
xsd: anySimpleType (для атрибутов этого типа) | java.lang.String |
xsd: duration | javax.xml.datatype.Duration |
xsd:NOTATION | javax.xml.namespace.QName |
Также смотрите
- 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
Примечания
- 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.
- Деннис Сосновски. XML and Java technologies: Data binding, Part 2: Performance . Дата обращения: 15 февраля 2011.
- XML Binding Frameworks in the Context of Service-Oriented Architecture . Дата обращения: 15 февраля 2011.
Ссылки
- Домашняя страница JAXB Ссылка на реализацию проекта GlassFish
- предыдущая домашняя страница JAXB
- Учебный курс по JAXB от Вольфганга Лауна
- JSR 222 (JAXB 2.0)
- JSR 31 (JAXB 1.0)
- Учебный курс по Java EE 5 — Binding between XML Schema and Java Classes параграф по JAXB из учебного курса Java EE 5
- JAXB Мастер Архивная копия от 31 мая 2012 на Wayback Machine
- Руководство по использованию JAXB со сложной схемой (недоступная ссылка) и JDeveloper.