Введение в JiBX
1. обзор
JiBX - это инструмент для привязки данных XML к объектам Java. Он обеспечивает хорошую производительность по сравнению с другими распространенными инструментами, такими как JAXB.
JiBX также достаточно гибок по сравнению с другими инструментами Java-XML, используя определения привязки для отделения структуры Java от представления XML, так что каждое из них может быть изменено независимо.
В этой статье мы рассмотрим различные способы, предоставляемые JiBX для привязки XML к объектам Java.
2. Компоненты JiBX
2.1. Обязательный документ определения
Документ определения привязки определяет, как ваши объекты Java преобразуются в или из XML.
Компилятор привязки JiBX принимает одно или несколько определений привязки в качестве входных данных вместе с реальными файлами классов. Он компилирует определение привязки в байт-код Java, добавляя его в файлы классов. Как только файлы классов будут улучшены с помощью этого скомпилированного кода определения привязки, они готовы к работе со средой выполнения JiBX.
2.2. инструменты
Есть три основных инструмента, которые мы собираемся использовать:
-
BindGen - для генерации привязки и сопоставления определений схемы из кода Java
-
CodeGen - для создания кода Java и определения привязки из схемы XML
-
JiBX2Wsdl - чтобы сделать определение привязки и соответствующий WSDL вместе с определением схемы из существующего кода Java
3. Конфигурация Maven
3.1. зависимости
Нам нужно добавить зависимость jibx-run вpom.xml:
org.jibx
jibx-run
1.3.1
Последнюю версию этой зависимости можно найти вhere.
3.2. Плагины
Чтобы выполнить различные шаги в JiBX, такие как генерация кода или генерация привязки, нам нужно настроитьmaven-jibx-plugin вpom.xml.
В случае, когда нам нужно начать с кода Java и сгенерировать привязку и определение схемы, давайте настроим плагин:
org.jibx
maven-jibx-plugin
...
src/main/resources
*-binding.xml
template-binding.xml
true
process-classes
bind
Когда у нас есть схема и мы генерируем Java-код и определение привязки,maven-jibx-plugin настраивается с использованием информации о пути к файлу схемы и пути к каталогу исходного кода:
org.jibx
maven-jibx-plugin
...
generate-java-code-from-schema
schema-codegen
src/main/jibx
customer-schema.xsd
true
compile-binding
bind
target/generated-sources
true
true
true
4. Обязательные определения
Обязательные определения являются основной частью JiBX. Файл базовой привязки определяет отображение между полями объектов XML и Java:
...
4.1. Структурное отображение
Отображение структуры делает структуру XML похожей на структуру объекта:
...
...
...
Соответствующие классы для этой структуры будут:
public class Customer {
private Person person;
...
// standard getters and setters
}
public class Person {
private String lastName;
...
// standard getters and setters
}
4.2. ОтображенияCollection иArray
Привязка JiBX обеспечивает простой способ работы с коллекцией объектов:
...
...
Давайте посмотрим на соответствующее сопоставление объектов Java:
public class Order {
List addressList = new ArrayList<>();
...
// getters and setters here
}
public static class Address {
private String name;
...
// standard getters and setter
}
4.3. Расширенные сопоставления
До сих пор мы видели базовое определение отображения. Отображение JiBX обеспечивает различные варианты отображения, такие как абстрактное отображение и наследование отображения.
Давайте посмотрим, как мы можем определить абстрактное отображение:
...
Давайте посмотрим, как это связывается с объектами Java:
public class Customer {
private Person person;
...
private Phone homePhone;
private Phone officePhone;
// standard getters and setters
}
Здесь мы указали несколько полейPhone в классеCustomer. СамPhone снова является POJO:
public class Phone {
private String number;
// standard getters and setters
}
В дополнение к обычным отображениям мы также можем определять расширения. Каждое расширение сопоставления относится к некоторому базовому сопоставлению. Во время маршалинга фактический тип объекта решает, какое сопоставление XML будет применено.
Посмотрим, как работают расширения:
...
...
...
Давайте посмотрим на соответствующие объекты Java:
public class Identity {
private long customerId;
// standard getters and setters
}
5. Заключение
В этой быстрой статье мы рассмотрели различные способы использования JiBX для преобразования XML в / из объектов Java. Мы также видели, как мы можем использовать обязательные определения для работы с различными представлениями.
Полный код этой статьи доступенover on GitHub.