JAXB教程介绍

本文概述

JAXB教程提供了用于将对象转换为XML和将XML转换为对象的概念和API。我们的JAXB教程是为初学者和专业人士设计的。

JAXB代表用于XML绑定的Java体系结构。它提供了将Java对象编组(写入)XML和将XML编组(读取)对象的机制。简单地说, 你可以说它用于将Java对象转换为xml, 反之亦然。

JAXB 2教程

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(); }  
	   
}
}

输出:

1 Vimal Jaiswal 50000.0


微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?