分享
 
 
 

JAXB的使用方法

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

Sun推出JAXB(JavaTM Architecture for XML Binding )已经有很长一段时间了。下面我来简单介绍一下,什麽是JAXB和怎莫使用。

JAXB是一套自动映射XML和Java实例的开发接口和工具。

JAXB使XML更加方便的编译一个XML SCHEMA到一个或若干个JAVA CLASS。提供了如下功能:

从XML到JAVA的映射,访问、更新、验证JAVA的表现,从JAVA到XML的映射。

长话短说,开始正题,JAXB的使用,我们只列举从XML到JAVA的案例:

什莫? 你不知道从哪里下载所需文件,不会吧。

老大!当然是java.sun.com/xml/jaxb了

首先要得到你想要转换的XML文件,我们DataSource为例,下表列举了DataSource.xml的内容:

<?xml version="1.0"?

<DataSources

<DataSource

<nameoracle</name

<driveroracle.jdbc.driver.OracleDriver</driver

<urljdbc:oracle:thin:@localhost:1521:orcl</url

<usernamescott</username

<passwordtiger</password

</DataSource

</DataSources

并且,我们还要有此XML的DTD文件(如果你不知道怎莫从DTD得到XML,或者不知道如何从XML得到DTD,请两天后再看此文),DataSource.dtd文件如下:

<?xml version='1.0' encoding="UTF-8"?

<!ELEMENT DataSource

(name,driver,url,username,password)

<!ELEMENT DataSources

(DataSource)

<!ELEMENT driver

(#PCDATA)

<!ELEMENT name

(#PCDATA)

<!ELEMENT password

(#PCDATA)

<!ELEMENT url

(#PCDATA)

<!ELEMENT username

(#PCDATA)

JAXB的使用还要配合一个转换规则的XML文件的使用,所以我们再根据我们的需要编写一个DataSource.xjs文件,如下所示:

<?xml version="1.0"?

<xml-java-binding-schema version="1.0ea"

<!-- Register a type.

This specifies that we want to use this type instead of String

somwhere in our document. --

<element name="DataSources" type="class" root="true" /

</xml-java-binding-schema

你觉得很复杂嘛?不要着急,马上就结束了。

下一步就是运行如下命令了:

java -jar %JAXB_HOME%\lib\jaxb-xjc-1.0-ea.jar DataSource.dtd DataSource.xjs -d destination_directory

你会看到在你指定的目录下,生成了我们想要的Java文件,你可以打开看看,到底是什莫东西。

OK,准备工作这就结束了。

让我们来看看如何使用我们生成的Java文件,使用前别忘了编译他们,这可是最基本的素质,我想不用我提醒了吧。

下面是一个测试程序的片断,看看到底灵不灵:

Datasources socks = new Datasources();

。。。。

File socksFile = new File("DataSource.xml");

InputStream fin = new FileInputStream(socksFile);

socks = socks.unmarshal(fin);

List sockList = socks.getDatasource();

好了,sockList就是我们得到的Java的对象了。你可以随意处置。我们下面把他们打印出来看一看:

for (Iterator i = sockList.iterator(); i.hasNext();) {

currentSock = (Datasource)i.next();

System.out.println(currentSock.getName());

System.out.println(currentSock.getDriver());

System.out.println(currentSock.getUrl());

System.out.println(currentSock.getUsername());

System.out.println(currentSock.getPassword());

}

OVER!

这就结束了吗?这莫简单嘛?

没错,就是这莫简单。并且运行效率还是很不错的

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有