电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

JAXB的使用方法


发布日期:2022/1/12
 

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的案例

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

老大!当然是/xml/jaxb了

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

<?xml version=?>

<DataSources>

<DataSource>

<name>oracle</name>

<driver>oraclejdbcdriverOracleDriver</driver>

<url>jdbc:oracle:thin:@localhost::orcl</url>

<username>scott</username>

<password>tiger</password>

</DataSource>

</DataSources>

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

<?xml version= encoding=UTF?>

<!ELEMENT DataSource

(namedriverurlusernamepassword)

>

<!ELEMENT DataSources

(DataSource)

>

<!ELEMENT driver

(#PCDATA)

>

<!ELEMENT name

(#PCDATA)

>

<!ELEMENT password

(#PCDATA)

>

<!ELEMENT url

(#PCDATA)

>

<!ELEMENT username

(#PCDATA)

>

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

<?xml version=?>

<xmljavabindingschema version=ea>

<! Register a typeThis specifies that we want to use this type instead of String

somwhere in our document. >

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

</xmljavabindingschema>

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

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

java jar %JAXB_HOME%\lib\jaxbxjceajar DataSourcedtd DataSourcexjs d destination_directory

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

OK准备工作这就结束了

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

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

Datasources socks = new Datasources();

File socksFile = new File(DataSourcexml);

InputStream fin = new FileInputStream(socksFile);

socks = socksunmarshal(fin);

List sockList = socksgetDatasource();

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

for (Iterator i = erator(); ihasNext();) {

currentSock = (Datasource)inext();

Systemoutprintln(currentSockgetName());

Systemoutprintln(currentSockgetDriver());

Systemoutprintln(currentSockgetUrl());

Systemoutprintln(currentSockgetUsername());

Systemoutprintln(currentSockgetPassword());

}

OVER!

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

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

上一篇:网页中相关事件的详细讲解和说明

下一篇:Turbine Howto 之 Action Event [译]