Автор оригинала: 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, так как вы можете видеть, что он очень прост в использовании.