- 浏览: 329390 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
cgs1999:
相关实现比较繁琐,有兴趣的朋友可以看看我的博客《用Java实现 ...
排列组合算法(JAVA实现) -
huhongda123:
很好,谢谢了
Eclipse/MyEclipse注释模板和格式化模板的使用 -
a785975139:
非常好
Eclipse/MyEclipse注释模板和格式化模板的使用 -
lightbulb:
写得非常详细
Eclipse/MyEclipse注释模板和格式化模板的使用 -
Ginger90:
感觉帆软报表这些采用的flash打印方式很不错啊
几种web报表打印方案的比较
JAXB常用注解
- 博客分类:
- JAVA
JAXB(Java API for XML Binding),提供了一个快速便捷的方式将Java对象与XML进行转换。在JAX-WS(Java的WebService规范之一)中,JDK1.6 自带的版本JAX-WS2.1,其底层支持就是JAXB。
JAXB
可以实现Java对象与XML的相互转换,在JAXB中,将一个Java对象转换为XML的过程称之为Marshal,将XML转换为Java对象的过程
称之为UnMarshal。我们可以通过在 Java
类中标注注解的方式将一个Java对象绑定到一段XML,也就是说,在Java类中标注一些注解,这些注解定义了如何将这个类转换为XML,怎么转换,以
及一段XML如何被解析成这个类所定义的对象;也可以使用JAXB的XJC工具,通过定义schema的方式实现Java对象与XML的绑定(这个下次研
究)。
下面来了解一下如何通过标注注解来完成 Marshal 和 UnMarshal 的过程。我用的是 JAXB2_20101209.jar ,可以到http://jaxb.java.net/
下载最新版本。
首先看个小例子:
定义一个java类
Java代码
package com.why.jaxb;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class People {
public String id = "001";
public String name = "灰太狼";
public int age = 26;
}
package com.why.jaxb;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class People {
public String id = "001";
public String name = "灰太狼";
public int age = 26;
}Java To XML(Marshal)
Java代码
package com.why.jaxb;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
public class Java2XML {
/**
* @param args
* @throws JAXBException
*/
public static void main(String[] args) throws JAXBException {
JAXBContext context = JAXBContext.newInstance(People.class);
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_ENCODING,"gb2312");//编码格式
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);//是否格式化生成的xml串
marshaller.setProperty(Marshaller.JAXB_FRAGMENT,
false);//是否省略xml头信息(<?xml version="1.0" encoding="gb2312"
standalone="yes"?>)
People people = new People();
marshaller.marshal(people, System.out);
}
}
package com.why.jaxb;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
public class Java2XML {
/**
* @param args
* @throws JAXBException
*/
public static void main(String[] args) throws JAXBException {
JAXBContext context = JAXBContext.newInstance(People.class);
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_ENCODING,"gb2312");//编码格式
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);//是否格式化生成的xml串
marshaller.setProperty(Marshaller.JAXB_FRAGMENT,
false);//是否省略xml头信息(<?xml version="1.0" encoding="gb2312"
standalone="yes"?>)
People people = new People();
marshaller.marshal(people, System.out);
}
}
XML To Java(UnMarshal)
Java代码
package com.why.jaxb;
import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import org.xml.sax.SAXException;
public class XML2Java {
/**
* @param args
* @throws JAXBException
* @throws JAXBException
* @throws SAXException
*/
public static void main(String[] args) throws JAXBException {
JAXBContext context = JAXBContext.newInstance(People.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
File file = new File("src/people.xml");
People people = (People)unmarshaller.unmarshal(file);
System.out.println(people.id);
System.out.println(people.name);
System.out.println(people.age);
}
}
package com.why.jaxb;
import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import org.xml.sax.SAXException;
public class XML2Java {
/**
* @param args
* @throws JAXBException
* @throws JAXBException
* @throws SAXException
*/
public static void main(String[] args) throws JAXBException {
JAXBContext context = JAXBContext.newInstance(People.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
File file = new File("src/people.xml");
People people = (People)unmarshaller.unmarshal(file);
System.out.println(people.id);
System.out.println(people.name);
System.out.println(people.age);
}
}
其实Marshal 和
UnMarshal的过程并不复杂,只需要从JAXBContext中获得Marshaller或Unmarshaller对象,就可以让JAXB帮我们
来进行转换了。我们需要操作的主要内容是定义一个规则,告诉JAXB如何将一个类、按照什么样的格式转换为XML,下面是JAXB中主要的一些注解。
@XmlRootElement 将一个Java类映射为一段XML的根节点
参数:name 定义这个根节点的名称
namespace 定义这个根节点命名空间
@XmlAccessorType 定义映射这个类中的何种类型需要映射到XML。可接收四个参数,分别是:
XmlAccessType.FIELD:映射这个类中的所有字段到XML
XmlAccessType.PROPERTY:映射这个类中的属性(get/set方法)到XML
XmlAccessType.PUBLIC_MEMBER:将这个类中的所有public的field或property同时映射到XML(默认)
XmlAccessType.NONE:不映射
@XmlElement 指定一个字段或get/set方法映射到XML的节点。如,当一个类的XmlAccessorType 被标注为PROPERTY时,在某一个没有get/set方法的字段上标注此注解,即可将该字段映射到XML。
参数:defaultValue 指定节点默认值
name 指定节点名称
namespace 指定节点命名空间
required 是否必须(默认为false)
nillable 该字段是否包含 nillable="true" 属性(默认为false)
type 定义该字段或属性的关联类型
@XmlAttribute 指定一个字段或get/set方法映射到XML的属性。
参数:name 指定属性名称
namespace 指定属性命名空间
required 是否必须(默认为false)
@XmlTransient 定义某一字段或属性不需要被映射为XML。如,当一个类的XmlAccessorType 被标注为PROPERTY时,在某一get/set方法的字段上标注此注解,那么该属性则不会被映射。
@XmlType 定义映射的一些相关规则
参数:propOrder 指定映射XML时的节点顺序
factoryClass 指定UnMarshal时生成映射类实例所需的工厂类,默认为这个类本身
factoryMethod 指定工厂类的工厂方法
name 定义XML Schema中type的名称
namespace 指定Schema中的命名空间
@XmlElementWrapper 为数组元素或集合元素定义一个父节点。如,类中有一元素为List items,若不加此注解,该元素将被映射为
<items>...</items>
<items>...</items>
这种形式,此注解可将这个元素进行包装,如:
@XmlElementWrapper(name="items")
@XmlElement(name="item")
public List items;
将会生成这样的XML样式:
<items>
<item>...</item>
<item>...</item>
</items>
@XmlJavaTypeAdapter
自定义某一字段或属性映射到XML的适配器。如,类中包含一个接口,我们可以定义一个适配器(继承自
javax.xml.bind.annotation.adapters.XmlAdapter类),指定这个接口如何映射到XML。
@XmlSchema 配置整个包的namespace,这个注解需放在package-info.java文件中。
发表评论
-
JAVA 多线程
2012-02-01 11:28 1140JAVA 多线程 线程与进程的区别:每个进程都需要操 ... -
Eclipse 插件收藏(1)
2011-11-22 16:50 10741.mylyn Mylin是taskt ... -
Eclipse中实用快捷键(二)
2011-11-22 15:40 1160导航 作用域 功能 快捷键 Java编辑器 打开结构 Ctrl ... -
Hibernate Validation
2011-09-15 10:44 1214Hibernate Validation 用 ... -
ant集成junit自动测试的build.xml标准模板 收藏
2011-03-16 12:55 4426本文来自CSDN博客,转载请标明出处:http://blo ... -
hibernate的Criteria Query
2011-02-15 16:50 1440当查询数据时,人们往往需要设置查询条件。在SQL ... -
Log4j的使用
2010-11-11 15:26 1295Log4j的使用 基本理论 ... -
Tomcat及相应Eclipse配置收集
2010-11-02 17:36 1468Java代码 一、下载: 下载地 ... -
Eclipse/MyEclipse注释模板和格式化模板的使用
2010-11-02 11:39 36784在一个项目的完整的生命周期中,其维护费用,往往是 ... -
Spring ApplicationContext.xml配置的12个技巧
2010-11-02 10:22 1416Spring是一个强有力的java程序框架 ... -
Eclipse中最实用快捷键(持续更新中...)
2010-11-01 17:04 1441Eclipse提供了大量的快捷键,结合自己在项目中的 ... -
常用正则表达式
2010-06-02 14:14 924"^\d+$" //非负整数(正整数 + ... -
浏览器菜单打印页眉页脚的设置
2010-05-11 14:50 2364先记下,备忘。。。 <!DOCTYPE HTML P ... -
几种web报表打印方案的比较
2010-05-11 14:42 5449web报表打印通常是系统的辅助部分,但是又必须解决,否则项目完 ... -
JS判断文本框的内容
2010-05-04 16:27 5983判断指定的内容是否为空,若为空则弹出 警告框*/functio ... -
唯一序列的生成
2010-03-22 18:37 1422UUID(Universally Unique ... -
JavaScript控制网页播放器的一些相关函数及参数
2010-03-19 11:46 1138<object classid="clsid: ... -
用正则表达式限制文本框只能输入数字,小数点,英文字母,汉字等收藏
2010-03-18 17:42 29951.文本框只能输入数字代码(小数点也不能输入)<inpu ... -
JavaScript字符串函数大全 【收藏】
2010-03-18 17:28 1228JS自带函数 concat 将两个或多个字符的文本组合起来 ... -
java List分组和排序处理
2010-01-24 17:53 43128在一些应用中,需要将List中的对象按某种情况分组或者排序处理 ...
相关推荐
JAXB注解相关技术JAXB注解相关技术JAXB注解相关技术JAXB注解相关技术JAXB注解相关技术JAXB注解相关技术
Jaxb annotation 使用 Jaxb annotation初步使用
JAXB-XML注解-应用
当使用的JDK为1.6版本的时候,JAXB注解命名空间使用到的jar包
JAXB注解 java 关于xml的注解,自动生成xml文件
使用jaxb生成XML例子,含有例子和注解解析
JAXB的使用JAXB的使用JAXB的使用JAXB的使用
JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML,也方便生成JSON,这样一来可以更好的标志可以转换为JSON对象的JAVA类。JAXB允许JAVA人员将JAVA类映射为XML表示方式
jaxb-libs.jar 下载 JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML...JAXB允许JAVA人员将JAVA类映射为XML表示方式,常用的注解包括:@XmlRootElement,@XmlElement等等。
无需安装,解压后即可。jaxb-api.jar,jaxb-xjc.jar,jaxb-impl.jar,activation.jar等相关jar包在lib文件夹下。
jaxb-api-2.2.jar 下载 JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成...JAXB允许JAVA人员将JAVA类映射为XML表示方式,常用的注解包括:@XmlRootElement,@XmlElement等等。
jaxb-api jaxb-impl jar
JAXB的安装包及插件
在使用webservice,mule esb等需要jaxb的项目里经常会出现 JAXB 2.0 API is being loaded from the bootstrap classloader这个错误,按照打出的信息Use the endorsed directory mechanism to place jaxb-api.jar in ...
JAXB的 eclipse插件 JAXB的 eclipse插件 JAXB的 eclipse插件 JAXB的 eclipse插件 JAXB的 eclipse插件
maven-jaxb2-plugin-0.14.0 下载 maven包 JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-...JAXB允许JAVA人员将JAVA类映射为XML表示方式,常用的注解包括:@XmlRootElement,@XmlElement等等。
java -jar JAXB2_20060607.jar On Windows, you can just double-click the jar file to execute. Release Notes Browse the release notes online, including what's new. Technical Support Please subscribe to...
一个jaxb小项目的源码,可以帮助理解jaxb的执行和注解。
有关Maven项目中缺少jaxb-api的异常报错解决,jaxb-api-2.3.0.jar
赠送jar包:jackson-module-jaxb-annotations-2.2.3.jar; 赠送原API文档:jackson-module-jaxb-annotations-2.2.3-javadoc.jar; 赠送源代码:jackson-module-jaxb-annotations-2.2.3-sources.jar; 赠送Maven依赖...