JAXB你好世界示例

JAXB ,代表XML绑定的Java体系结构 ,它使用JAXB批注将Java对象与XML文件相互转换。 在本教程中,我们向您展示如何使用JAXB进行以下工作:

  1. 编组–将Java对象转换为XML文件。
  2. 解组–将XML内容转换为Java对象。

本文使用的技术

  1. JDK 1.6
  2. JAXB 2.0

使用JAXB很容易,只需使用JAXB注释对对象进行注释,然后使用jaxbMarshaller.marshal()jaxbMarshaller.unmarshal()进行对象/ XML转换。

1. JAXB依赖

如果您使用的是JDK1.6或更高版本,则不需要额外的jaxb库,因为JAXB捆绑在JDK 1.6中

注意
对于JDK <1.6,请从此处下载JAXB,并将“ jaxb-api.jar ”和“ jaxb-impl.jar ”放在您的项目类路径中。

2. JAXB注释

对于需要转换为XML文件的对象,必须使用JAXB注释进行注释。 注释很容易解释,您可以参考此JAXB指南进行详细说明。

package com.mkyong.core;

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Customer {

	String name;
	int age;
	int id;

	public String getName() {
		return name;
	}

	@XmlElement
	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	@XmlElement
	public void setAge(int age) {
		this.age = age;
	}

	public int getId() {
		return id;
	}

	@XmlAttribute
	public void setId(int id) {
		this.id = id;
	}

}

3.将对象转换为XML

JAXB编组示例,将客户对象转换为XML文件。 jaxbMarshaller.marshal()包含许多重载方法,找到适合您输出的方法。

package com.mkyong.core;

import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;

public class JAXBExample {
	public static void main(String[] args) {

	  Customer customer = new Customer();
	  customer.setId(100);
	  customer.setName("mkyong");
	  customer.setAge(29);

	  try {

		File file = new File("C:\\file.xml");
		JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
		Marshaller jaxbMarshaller = jaxbContext.createMarshaller();

		// output pretty printed
		jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

		jaxbMarshaller.marshal(customer, file);
		jaxbMarshaller.marshal(customer, System.out);

	      } catch (JAXBException e) {
		e.printStackTrace();
	      }

	}
}

输出量

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer id="100">
    <age>29</age>
    <name>mkyong</name>
</customer>

4.将XML转换为对象

JAXB解组示例,将XML文件内容转换为客户对象。 jaxbMarshaller.unmarshal()包含许多重载的方法,找到适合您的方法。

package com.mkyong.core;

import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;

public class JAXBExample {
	public static void main(String[] args) {

	 try {

		File file = new File("C:\\file.xml");
		JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);

		Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
		Customer customer = (Customer) jaxbUnmarshaller.unmarshal(file);
		System.out.println(customer);

	  } catch (JAXBException e) {
		e.printStackTrace();
	  }

	}
}

输出量

Customer [name=mkyong, age=29, id=100]

参考文献

  1. JAXB官方网站
  2. J2EE 5 JAXB教程

翻译自: https://mkyong.com/java/jaxb-hello-world-example/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值