隨筆:93 文章:11 評論:22 引用:0
My Rhythm
萬物皆對象 萬事歸節奏
首頁
發新隨筆
發新文章
聯系
聚合
管理
JABX簡單介紹
主要引至
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
1
package
step1;
2
import
javax.xml.bind.annotation.XmlAttribute;
3
import
javax.xml.bind.annotation.XmlElement;
4
import
javax.xml.bind.annotation.XmlRootElement;
5
6
/**/
/*
@XmlRootElement 注釋可以與以下程序元素一起使用:
7
頂層類
8
枚舉類型
9
當使用 @XmlRootElement 注釋對頂層類或枚舉類型進行注釋時,
10
類型值被表示為 XML 文檔中的 XML 元素。
11
*/
12
@XmlRootElement
13
public
class
Customer
{
14
String name;
15
int
age;
16
int
id;
17
18
@XmlElement
//
該注釋用于將JavaBean 屬性映射到派生于屬性名稱的 XML 元素
19
public
String getName()
{
20
return
name;
21
}
22
public
void
setName(String name)
{
23
this
.name
=
name;
24
}
25
26
@XmlElement
27
public
int
getAge()
{
28
return
age;
29
}
30
public
void
setAge(
int
age)
{
31
this
.age
=
age;
32
}
33
34
@XmlAttribute
//
將JavaBean 屬性映射到 XML 屬性。
35
public
int
getId()
{
36
return
id;
37
}
38
public
void
setId(
int
id)
{
39
this
.id
=
id;
40
}
41
42
@Override
43
public
String toString()
{
44
return
"
Customer [id=
"
+
id
+
"
,name=
"
+
name
+
"
,age=
"
+
age
+
"
]
"
;
45
}
46
47
48
49
}
50
Object2XmlDemo.java
1
package
step1;
2
3
import
java.io.File;
4
import
javax.xml.bind.JAXBContext;
5
import
javax.xml.bind.JAXBException;
6
import
javax.xml.bind.Marshaller;
7
8
/** */
/**
9
*編組 Marshal(java 2 xml)
10
*/
11
public
class
Object2XmlDemo
{
12
public
static
void
main(String[] args)
{
13
14
Customer customer
=
new
Customer();
15
customer.setId(
100
);
16
customer.setName(
"
mkyong
"
);
17
customer.setAge(
29
);
18
try
{
19
File file
=
new
File(
"
H:\\file3.xml
"
);
20
//
獲得JAXBContext類的新實例
21
JAXBContext jaxbContext
=
JAXBContext.newInstance(Customer.
class
);
22
//
創建一個可以用來將 java 內容樹轉換為 XML 數據的 Marshaller 對象。
23
//
(Marshaller 類負責管理將 Java 內容樹序列化回 XML 數據的過程)
24
Marshaller jaxbMarshaller
=
jaxbContext.createMarshaller();
25
//
output pretty printed
26
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
true
);
//
設置XML自動換行
27
jaxbMarshaller.marshal(customer, file);
//
將以customer為根的內容樹 編組到輸出流中
28
jaxbMarshaller.marshal(customer, System.out);
29
}
catch
(JAXBException e)
{
30
e.printStackTrace();
31
}
32
}
33
}
34
執行后生成對應的xml文件
后臺打印
1
<?
xml version="1.0" encoding="UTF-8" standalone="yes"
?>
2
<
customer
id
="100"
>
3
<
age
>
29
</
age
>
4
<
name
>
mkyong
</
name
>
5
</
customer
>
6
Xml2ObjectDemo.java
1
package
step1;
2
3
import
java.io.File;
4
import
javax.xml.bind.JAXBContext;
5
import
javax.xml.bind.JAXBException;
6
import
javax.xml.bind.Unmarshaller;
7
8
/** */
/**
9
*解組 Unmarshaller(xml 2 java)
10
*/
11
public
class
Xml2ObjectDemo
{
12
public
static
void
main(String[] args)
{
13
try
{
14
File file
=
new
File(
"
H:\\file.xml
"
);
15
JAXBContext jaxbContext
=
JAXBContext.newInstance(Customer.
class
);
16
//
創建一個可以用來將 XML 數據轉換為 java 內容樹的 Unmarshaller 對象。
17
Unmarshaller jaxbUnmarshaller
=
jaxbContext.createUnmarshaller();
18
//
從指定的文件解組 XML 數據并返回得到的內容樹。
19
Customer customer
=
(Customer) jaxbUnmarshaller.unmarshal(file);
20
System.out.println(customer);
21
}
catch
(JAXBException e)
{
22
e.printStackTrace();
23
}
24
}
25
}
26
執行后,打印
Customer [id=100,name=mkyong,age=29]
其他應用可結合API及其他范例學習.
發表于 2013-04-11 12:30
redcoatjk
閱讀(5550)
評論(0)
編輯
收藏
所屬分類:
J2se
CALENDER
<
2025年5月
>
日
一
二
三
四
五
六
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(3)
給我留言
查看公開留言
查看私人留言
隨筆分類
(22)
balabala(2)
(rss)
Database(9)
(rss)
Hibernate(1)
(rss)
J2se(5)
(rss)
Others_4Data Persistence(2)
(rss)
Spring(1)
(rss)
View_lever(2)
(rss)
隨筆檔案
(76)
2014年3月 (1)
2013年11月 (1)
2013年4月 (1)
2012年9月 (1)
2012年7月 (3)
2012年6月 (1)
2012年2月 (2)
2011年11月 (2)
2011年10月 (1)
2011年8月 (5)
2011年6月 (1)
2011年5月 (3)
2011年2月 (1)
2010年8月 (2)
2010年7月 (2)
2010年6月 (2)
2010年5月 (3)
2010年3月 (3)
2009年11月 (2)
2009年10月 (2)
2009年9月 (1)
2009年7月 (2)
2009年5月 (12)
2009年4月 (2)
2009年3月 (3)
2009年2月 (6)
2008年12月 (8)
2008年11月 (3)
文章分類
(12)
J2se(3)
(rss)
Spring(8)
(rss)
Stu-notes(1)
(rss)
文章檔案
(17)
2013年4月 (2)
2010年8月 (1)
2009年2月 (12)
2008年10月 (2)
搜索
積分與排名
積分 - 250544
排名 - 227
最新評論
1.?re: Hibernate session 獲取方式淺談[未登錄]
總結的到位,很值得學習!
--111
2.?re: [轉]java截取字符串,截串,substring和split,分割字母和數字,正則縫隙
ddd
--lukes
3.?將字符串-uadmin-padmin1208@192.168.0.222:/home/admin/zrl/java/rmi/activation分割成admin,admin1208,192.168.0.222,/home/admin/zrl/java/rmi/activation[未登錄]
請幫忙
--美美
4.?re: [轉]Statement和PreparedStatement批量更新
對我的幫助真是太大了
--請問
5.?re: [轉]JDBC中Statement與PreparedStatement的區別
非常好的總結!頂
--naomi
評論排行榜
1.?Hibernate session 獲取方式淺談(3)
2.?[轉]JDBC中Statement與PreparedStatement的區別(2)
3.?[轉]java截取字符串,截串,substring和split,分割字母和數字,正則縫隙(2)
4.?[轉]程序員職業規劃(2)
5.?[轉]JDK5新特性匯總(與1.4對照)(2)
Powered By:
博客園
模板提供
:
滬江博客
主站蜘蛛池模板:
污污视频免费观看网站
|
国产成人无码免费看片软件
|
人人爽人人爽人人片av免费
|
最近免费中文字幕中文高清
|
国产成人在线免费观看
|
亚洲综合精品香蕉久久网
|
亚洲成人在线免费观看
|
色多多www视频在线观看免费
|
91精品国产免费久久国语蜜臀
|
久久国产精品免费专区
|
免费看片A级毛片免费看
|
亚洲AV无码久久精品成人
|
亚洲欧美日韩一区二区三区
|
国产又黄又爽胸又大免费视频
|
国产一卡2卡3卡4卡2021免费观看 国产一卡2卡3卡4卡无卡免费视频
|
国产AV无码专区亚洲A∨毛片
|
2020亚洲男人天堂精品
|
三年片免费高清版
|
免费看a级黄色片
|
亚洲免费在线播放
|
男女污污污超污视频免费在线看
|
最近免费字幕中文大全视频
|
亚洲成av人在片观看
|
亚洲国产美女视频
|
91免费在线视频
|
国产成人免费福利网站
|
亚洲免费人成视频观看
|
a在线视频免费观看
|
无码不卡亚洲成?人片
|
亚洲a∨无码男人的天堂
|
成av免费大片黄在线观看
|
精品国产免费一区二区
|
99ri精品国产亚洲
|
久久久久免费视频
|
免费人成网站在线高清
|
自拍日韩亚洲一区在线
|
99视频免费播放
|
久久国产亚洲精品麻豆
|
美女羞羞免费视频网站
|
在线v片免费观看视频
|
亚洲午夜久久影院
|