JAXB教程介绍

本文概述

  • JAXB 2.0的功能
  • 简单的JAXB编组示例:将对象转换为XML
  • 简单的JAXB UnMarshalling示例:将XML转换为对象
JAXB教程提供了用于将对象转换为XML和将XML转换为对象的概念和API。我们的JAXB教程是为初学者和专业人士设计的。
JAXB代表用于XML绑定的Java体系结构。它提供了将Java对象编组(写入)XML和将XML编组(读取)对象的机制。简单地说, 你可以说它用于将Java对象转换为xml, 反之亦然。
JAXB教程介绍

文章图片
JAXB 2.0的功能 JAXB 2.0包含JAXB 1.x中没有的一些功能。它们如下:
1)批注支持:JAXB 2.0提供了对批注的支持, 因此开发JAXB应用程序所需的编码更少。 javax.xml.bind.annotation包提供了JAXB 2.0的类和接口。
2)支持所有W3C XML Schema功能:与JAXB 1.0不同, 它支持所有W3C Schema。
3)其他验证功能:它通过JAXP 1.3验证API提供了额外的验证支持。
4)小型运行时库:它需要JAXB 1.0小型运行时库。
5)减少生成的架构派生的类:它减少了很多生成的架构派生的类。
简单的JAXB编组示例:将对象转换为XML 让我们看看将Java对象转换为XML文档的步骤。
  • 创建POJO或绑定模式并生成类
  • 创建JAXBContext对象
  • 创建Marshaller对象
  • 通过使用set方法创建内容树
  • 调用元帅方法
import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class Employee { private int id; private String name; private float salary; public Employee() {} public Employee(int id, String name, float salary) { super(); this.id = id; this.name = name; this.salary = salary; } @XmlAttribute public int getId() { return id; } public void setId(int id) { this.id = id; } @XmlElement public String getName() { return name; } public void setName(String name) { this.name = name; } @XmlElement public float getSalary() { return salary; } public void setSalary(float salary) { this.salary = salary; } }

@XmlRootElement指定xml文档的根元素。
@XmlAttribute指定根元素的属性。
@XmlElement指定根元素的子元素。
import java.io.FileOutputStream; import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; public class ObjectToXml { public static void main(String[] args) throws Exception{ JAXBContext contextObj = JAXBContext.newInstance(Employee.class); Marshaller marshallerObj = contextObj.createMarshaller(); marshallerObj.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); Employee emp1=new Employee(1, "Vimal Jaiswal", 50000); marshallerObj.marshal(emp1, new FileOutputStream("employee.xml")); } }

输出: 生成的xml文件将如下所示:
< ?xml version="1.0" encoding="UTF-8" standalone="yes"?> < employee id="1"> < name> Vimal Jaiswal< /name> < salary> 50000.0< /salary> < /employee>

简单的JAXB UnMarshalling示例:将XML转换为对象
import java.io.File; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Unmarshaller; public class XMLToObject { public static void main(String[] args) { try { File file = new File("employee.xml"); JAXBContext jaxbContext = JAXBContext.newInstance(Employee.class); Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); Employee e=(Employee) jaxbUnmarshaller.unmarshal(file); System.out.println(e.getId()+" "+e.getName()+" "+e.getSalary()); } catch (JAXBException e) {e.printStackTrace(); }} }

【JAXB教程介绍】输出:
1 Vimal Jaiswal 50000.0

    推荐阅读