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 ...
随机推荐
- docker
docker pull centos docker images docker run -ti centos cat /etc/redhat-release ##################### ...
- 《InsideUE4》-6-GamePlay架构(五)Controller
<InsideUE4>-6-GamePlay架构(五)Controller Tags: InsideUE4 GamePlay 那一天 Pawn又回想起了 被Controller所支配的恐惧 ...
- 关于selenium的CI、框架……
这段时间除了项目测试外,主要在做web自动化的事情,大致总结一下吧,总体的设计模式pageobject+pagefactory+testng的数据驱动,项目用maven来构建,使用jenkins集成, ...
- 并查集补集作法 codevs 1069 关押罪犯
1069 关押罪犯 2010年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description ...
- Easy UI常用插件使用
一.easy UI是类似于jQuery UI的插件库,它提供了丰富的各种常用插件:tree.datagrid... tree插件: 语法:$(selector).tree([settings]); 常 ...
- AC日记——I Hate It 洛谷 P1531
题目背景 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少.这让很多学生很反感. 题目描述 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的 ...
- ajax方法总结
ajax方法总结 1.原生ajax get请求和post请求区别:黄色小三角 以get请求为例,输出结果如下: 2.jquery中的ajax 列了常用的6个方法: 3.状态说明 readystate: ...
- 正则获取HTML代码中img的src地址
/// <summary> /// 获得HTML中所有图片的src地址 /// </summary> /// <param name="sHtmlText&qu ...
- MySQL5.6忘记root用户名和密码
首先我们要做的是关闭数据库,还好这个只是一个开发库,要是生产库的话使用另外一种方法修改root用户名和密码,我在另一篇文章有记载 然后我们跳过网络,跳过授权表,这个时候只有本机可以登录了,外部机器就不 ...
- session过期返回登录页面跳出frame
session 过期返回登录页面 方法1, HttpSession session = request.getSession(); String LOGIN_ID = (String) session ...