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. Архивировано 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.
Статьи
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.