Рубрики
Без рубрики

Пример учебника по JAXB

Учебник по JAXB. Пример JAXB. Объект Java в XML, XML в объект Java. ДЖАКСБ Выстраивается Без согласования. @XmlRootElement, @XMLType, @XmlTransient, @XmlElement

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