Автор оригинала: Pankaj Kumar.
Добро пожаловать в примерный учебник по JAXB. Архитектура Java для привязки XML ( JAXB ) предоставляет API для простого преобразования объекта в XML и XML в объект. JAXB был разработан как отдельный проект, но он широко использовался и, наконец, стал частью JDK в Java 6.
Учебник по JAXB
Этот учебник основан на Java 7 и текущей версии JAXB 2.0.
Сортировка JAXB : Преобразование объекта Java в XML.
JAXB Демонтаж : Преобразование XML в объект Java.
Использование JAXB очень просто, и в нем используются аннотации java . Нам нужно аннотировать объект Java, чтобы предоставить инструкции по созданию XML, а затем мы должны создать Маршаллер для преобразования объекта в XML.
Unmarshaller используется для преобразования XML в объект java.
JAXBContext является точкой входа для JAXB и предоставляет методы для получения объекта marshaller и unmarshaller.
Некоторые основные и полезные аннотации JAXB являются:
- @XmlRootElement : Это обязательная аннотация для объекта, который будет использоваться в JAXB. Он определяет корневой элемент для XML-содержимого.
- @XMLType : Он сопоставляет класс с типом схемы XML. Мы можем использовать его для упорядочения элементов в XML.
- @XmlTransient : Это гарантирует, что свойство объекта не будет записано в XML.
- @XmlAttribute: Это создаст свойство объекта в качестве атрибута.
- @XmlElement(имя): Это создаст элемент с именем “abc”
Есть некоторые другие аннотации JAXB, которые вы можете узнать на Официальном сайте JAXB .
Пример JAXB
Давайте запустим простую программу на примере JAXB, чтобы продемонстрировать использование JAXB-маршалинга и распараллеливания.
package com.journaldev.xml.jaxb;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;
@XmlRootElement(name = "Emp")
@XmlType(propOrder = {"name", "age", "role", "gender"})
public class Employee {
private int id;
private String gender;
private int age;
private String name;
private String role;
private String password;
@XmlTransient
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@XmlAttribute
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement(name = "gen")
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
@Override
public String toString() {
return "ID = " + id + " NAME=" + name + " AGE=" + age + " GENDER=" + gender + " ROLE=" +
role + " PASSWORD=" + password;
}
}
Сотрудник – это обычный java-компонент с закрытыми полями и их получателями и установщиками. Обратите внимание на использование аннотаций JAXB для определения корневого элемента, имени элемента, порядка элементов и переходного свойства.
Вот пример тестовой программы JAXB, показывающей Сортировку JAXB и Отмену сортировки JAXB .
package com.journaldev.xml.jaxb;
import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
public class JAXBExample {
private static final String FILE_NAME = "jaxb-emp.xml";
public static void main(String[] args) {
Employee emp = new Employee();
emp.setId(1);
emp.setAge(25);
emp.setName("Pankaj");
emp.setGender("Male");
emp.setRole("Developer");
emp.setPassword("sensitive");
jaxbObjectToXML(emp);
Employee empFromFile = jaxbXMLToObject();
System.out.println(empFromFile.toString());
}
private static Employee jaxbXMLToObject() {
try {
JAXBContext context = JAXBContext.newInstance(Employee.class);
Unmarshaller un = context.createUnmarshaller();
Employee emp = (Employee) un.unmarshal(new File(FILE_NAME));
return emp;
} catch (JAXBException e) {
e.printStackTrace();
}
return null;
}
private static void jaxbObjectToXML(Employee emp) {
try {
JAXBContext context = JAXBContext.newInstance(Employee.class);
Marshaller m = context.createMarshaller();
//for pretty-print XML in JAXB
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
// Write to System.out for debugging
// m.marshal(emp, System.out);
// Write to File
m.marshal(emp, new File(FILE_NAME));
} catch (JAXBException e) {
e.printStackTrace();
}
}
}
Вышеуказанная программа создает следующее jaxb-emp.xml файл.
Pankaj 25 Developer Male
Убедитесь, что в XML-файле нет поля пароля, и мы получим следующий вывод, когда тот же XML-файл не будет добавлен в объект.
ID = 1 NAME=Pankaj AGE=25 GENDER=Male ROLE=Developer PASSWORD=null
Это все для примера учебника по JAXB, так как вы можете видеть, что он очень прост в использовании.