主要引至http://suo.iteye.com/blog/1233458
一、简介
1、概念是什么:(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。是一种xml与object映射绑定技术标准,既然是标准就可以有不同实现.
2、JAXB中有什么:包含“xjc”工具和一个“schemagen”工具。
“xjc”工具可以用来将XML模式或其他类型模式文件(Java 1.6试验性地支持RELAX NG,DTD以及WSDL)转换为Java类。Java类使用javax.xml.bind.annotation包下的Java 标注,例如@XmlRootElement和@XmlElement。XML列表序列表示为java.util.List类型的属性, 通过JAXBContext可以创建Marshallers(将Java对象转换成XML)和Unmarshallers(将XML解析为Java对象)。 另外的“schemagen”工具,能够执行“xjc”的反向操作,通过一组标注的Java类创建一个XML模式。
二、JDK5以下开发需要的jar包:activation.jar、jaxb-api.jar、 jaxb-impl.jar、 jsr173-api.jar; 如果是基于JDK6以上版本已经集成JAXB2的JAR,在目录{JDK_HOME}/jre/lib/rt.jar中。
三、标注相关
注意:
1、注解可在属性定义上,也可在getter()方法上,最好在方法上注解,修饰属性用private,方法是public,属性注解可能会出现问题(如:JAXB “Class has two properties of the same name”)。
2、对象中的属性可以不全部映射到xml中,xml中出现的元素也不一定与映射的实体一一对应,映射的双方可以灵活对应
3、类上注解后,类中元素也默认按默认名称映射,但是对象属性名称与xml节点元素名称不一致时或者不需要显示在xml节点中时,则必须做对应的映射配置。
4、注解实例:映射一般分分:类名与xml根节点的映射、普通属性与xml节点的映射、集合与xml中包含子元素的节点的映射。
示例代码:
step1:
Customer.java
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
2
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
3
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
4
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
5
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
6
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif)
7
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
8
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
9
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
10
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
11
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif)
12
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
13
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif)
14
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
15
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
16
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
17
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
18
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
19
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif)
20
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
21
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
22
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif)
23
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
24
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
25
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
26
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
27
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif)
28
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
29
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
30
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif)
31
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
32
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
33
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
34
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
35
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif)
36
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
37
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
38
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif)
39
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
40
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
41
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
42
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
43
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif)
44
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
45
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
46
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
47
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
48
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
49
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif)
50
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
Object2XmlDemo.java
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
2
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
3
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
4
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
5
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
6
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
7
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
8
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif)
9
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
10
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif)
11
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif)
12
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif)
13
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
14
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
15
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
16
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
17
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
18
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif)
19
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
20
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
21
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
22
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
23
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
24
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
25
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
26
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
27
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
28
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
29
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif)
30
![](http://www.blogjava.net/images/OutliningIndicators/InBlock.gif)
31
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
32
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
33
![](http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif)
34
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
执行后生成对应的xml文件
后台打印
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
2
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
3
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
4
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
5
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
6
![](http://www.blogjava.net/images/OutliningIndicators/None.gif)
Xml2ObjectDemo.java
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
2
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
3
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
4
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
5
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
6
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
7
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
8
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
9
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
10
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif)
11
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
12
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
13
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
14
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
15
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
16
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
17
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
18
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
19
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
20
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
21
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
22
![](http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif)
23
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
24
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
25
![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif)
26
![](http://www.blogjava.net/Images/OutliningIndicators/None.gif)
执行后,打印
Customer [id=100,name=mkyong,age=29]
其他应用可结合API及其他范例学习.