jaxb
一、简介
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用程序中能方便地结合XML数据和处理函数。
Java SE中的JAXB
JDK中JAXB相关的重要Class和Interface:
JDK中JAXB相关的重要Annotation:
//将java对象Car转成xml数据
1 static void toXml() throws Exception{
JAXBContext jaxbContext = JAXBContext.newInstance(Car.class);
Marshaller marshaller = jaxbContext.createMarshaller(); Wheel wheel = new Wheel();
FuelSystem fuelSystem = new FuelSystem();
fuelSystem.setName("燃油系统");
Engine engine = new Engine();
engine.setFuelSystem(fuelSystem);
Car car = new Car();
car.setWheel(wheel);
car.setEngine(engine); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
//marshaller.marshal(car, System.out);
marshaller.marshal(car, new FileOutputStream("src/car.xml"));
}
生成的xml文件
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<car>
<wheel>
<hub>4</hub>
<tire>4</tire>
</wheel>
<engine>
<fuelSystem>
<name>燃油系统</name>
</fuelSystem>
</engine>
</car>
//xml文件转成对象
static void Xml2Obj() throws Exception{
JAXBContext jaxbContext = JAXBContext.newInstance(Car.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
Car car = (Car) unmarshaller.unmarshal(new File("src/car.xml"));
System.out.println(car);
}
输出的值为car.toString():
Car [wheel=Wheel [tire=4, hub=4], engine=Engine [fuelSystem=FuelSystem [name=燃油系统]]]
package com.chen.jaxb; import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Car {
private Wheel wheel;
private Engine engine;
public Wheel getWheel() {
return wheel;
}
public void setWheel(Wheel wheel) {
this.wheel = wheel;
}
public Engine getEngine() {
return engine;
}
public void setEngine(Engine engine) {
this.engine = engine;
}
@Override
public String toString() {
return "Car [wheel=" + wheel + ", engine=" + engine + "]";
}
}
package com.chen.jaxb;
public class Engine {
private FuelSystem fuelSystem;
public FuelSystem getFuelSystem() {
return fuelSystem;
}
public void setFuelSystem(FuelSystem fuelSystem) {
this.fuelSystem = fuelSystem;
}
@Override
public String toString() {
return "Engine [fuelSystem=" + fuelSystem + "]";
}
}
package com.chen.jaxb;
public class FuelSystem {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "FuelSystem [name=" + name + "]";
}
}
package com.chen.jaxb;
public class Wheel {
int tire = 4; //轮胎
int hub = 4; //轮毂
public int getTire() {
return tire;
}
public void setTire(int tire) {
this.tire = tire;
}
public int getHub() {
return hub;
}
public void setHub(int hub) {
this.hub = hub;
}
@Override
public String toString() {
return "Wheel [tire=" + tire + ", hub=" + hub + "]";
}
}
jaxb的更多相关文章
- XmlRootElement JAXB
http://desert3.iteye.com/blog/1570092(文章已经很好) 看了那边文章以后尝试后写点直白的 PROPERTY: JAXB 绑定类中的每个获取方法/设置方法对将会自动绑 ...
- 错误:java.util.Map is an interface, and JAXB can't handle interfaces.
问题: 在整合spring+cxf时报错java.util.Map is an interface, and JAXB can't handle interfaces. 解决方法: 将服务端的serv ...
- Jaxb annotation使用
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.该过程中,JAXB也提供了将XML实例文档反向 ...
- JAXB最佳实践
JAXB主要用来实现对象和XML之间的序列化和反序列化. 本文主要总结JAXB基本使用方法和注意事项! 通过下文的XML示例内容进行JAXB的简单实践 <?xml version="1 ...
- 在Gradle中使用jaxb的xjc插件
jaxb,全称为Java Architecture for Xml Binding,是一种将java对象与xml建立起映射的技术.其主要提供两个功能,一是将java对象映射为xml,二是将xml映射为 ...
- Java for XML: JAXP、JAXB、JAXM、JAX-RPC、JAX-WS
在XML领域里,对XML文件的校验有两种方式:DTD校验.Schema校验.在Java中,对于XML的解析,有多种方式:DOM解析.SAX解析.StAX解析.结合XML和Java后,就产生了Bind技 ...
- XStream、JAXB 日期(Date)、数字(Number)格式化输出xml
XStream.Jaxb是java中用于对象xml序列化/反序列化 的经典开源项目,利用它们将对象转换成xml时,经常会遇到日期(Date).数字按指定格式输出的需求,下面是使用示例: 一.日期字段格 ...
- java JAXB 学习
JAXB(Java Architecture for XML Binding)是JDK的一部分,用于Object <-> XML的转换(有点类似于.NET中的XML序列化). 1.创建XS ...
- Jaxb 解析 带有继承关系的bean与xml
具体方法: 1. 在jaxb的setClasstobebounds中,只需要子类的class,无需父类. 2. 父类的前面加如下声明: @XmlAccessorType(XmlAccessType.F ...
随机推荐
- 【小白的CFD之旅】02 江小白
虽然已经是9月份了,但是西南地区的湿热天气依然将小白热成了狗.独自一个人来到这号称天府之国的西南城市,小白却一点都没感受到这天府之国的友好.毒辣的阳光像利剑一样照射到身上,让人感觉如在蒸笼中一样.从炎 ...
- phpqrcode 生成二维码
这个项目需要根据信息来自动生成二维码,到网上搜了下,发现php有生成二维码的类库phpqrcode,所以打算就用这个来生成二维码 从官网下载类库源码http://sourceforge.net/pro ...
- Namesilo 管理域名教程
在NameSilo注册域名之后,我们要做的就是开始对域名进行日常管理应用.大家可以参照下面这个Namesilo域名管理图文教程进行相应的操作. 1. 登录域名管理列表并选择相应域名 首先,登录Name ...
- 小讲堂:Mobox文档管理软件中的文件外链是什么?
今天我们来讨论Mobox文档管理软件中的文件外链是什么?熟悉MOBOX的朋友们应该知道,如果有文件需要分享给其他同事,直接可以进行文件共享.对方会在AM的即时通讯客户端有消息提醒,点击消息提醒可以看到 ...
- 第2章 Linux系统安装(3)_SSH连接Linux工具:SecureCRT和WinSCP
4. SSH连接Linux工具 4.1 Linux网卡配置 (1)临时配置: ifconfig eth0 192.168.32.100 //给eth0网卡指定IP,写在ROM里的,关机会丢失. (2) ...
- MongoDB学习笔记一
操作系统:Windows7 1.下载MongoDB 2.6.5服务端,并安装 网址:http://pan.baidu.com/s/1dDfoJAh 说明:网上很多都不需要安装的,这个需要安装. 2.添 ...
- 编译安装apache
1.安装依赖库:“Development Tools” “Server Platform Development” pcre-devel 2.安装apr,apr-util 从yum源安装或去ap ...
- ASP.NET Identity 简介
翻译自:http://www.asp.net/identity/overview/getting-started/introduction-to-aspnet-identity ,略有改动. 背景:A ...
- hdu2874 LCA在线算法
Connections between cities Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (J ...
- 在Vi里面实现字符串的批量替换
在Vi里面实现字符串的批量替换. a. 文件内全部替换: %s#abc#def#g(用def替换文件中所有的abc) 例如把一个文本文件里面的"linuxidc.com"全部替换成 ...