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 |
Версии
- Java SE 7: JAXB 2.2.3 (JSR 222, maintenance release 2)[5]
- Java SE 6: JAXB 2.0 (JSR 222)[6]
Также смотрите
- 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. Архивировано 11 марта 2011 года.
- ↑ JSRs: Java Specification Requests. JSR 222: Java Architecture for XML Binding (JAXB) 2.0 (неопр.). Дата обращения: 15 февраля 2011. Архивировано 12 февраля 2011 года.
- ↑ xjc - Java Architecture for XML Binding (неопр.). Дата обращения: 15 февраля 2011. Архивировано 17 марта 2011 года.
- ↑ Using JAXB Data Binding: Standard Data Type Mapping (неопр.). Дата обращения: 7 августа 2013. Архивировано 13 июля 2013 года.
- ↑ Java SE7: Java XML Technology Enhancements (неопр.). Дата обращения: 21 марта 2012. Архивировано 9 марта 2012 года.
- ↑ Java SE 6: Features and Enhancements (неопр.). Дата обращения: 21 марта 2012. Архивировано 22 марта 2012 года.
- ↑ Деннис Сосновски. XML and Java technologies: Data binding, Part 2: Performance (неопр.). Дата обращения: 15 февраля 2011. Архивировано 11 марта 2011 года.
- ↑ XML Binding Frameworks in the Context of Service-Oriented Architecture (неопр.). Дата обращения: 15 февраля 2011. Архивировано 16 июля 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.
Статьи
- Создание XML-документа из объектной модели с JAXB 2
- JAXB 2.0
- XML and Java technologies: Data binding, Part 2: Performance