JAXB的使用(快速入门)

       Sun 推出 JAXB Java TM Architecture for XML Binding )已经有一段时间了,目前的版本是 1 0 Final )。下面让我来简单介绍一下,什麽是 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 >
      < name > oracle </ name >
      < driver > oracle.jdbc.driver.OracleDriver </ driver >
      < url > jdbc:oracle:thin:@localhost:1521:orcl </ url >
      < username > scott </ username >
     <password>tiger</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!
这就结束了吗?这莫简单嘛?
没错,就是这莫简单。并且运行效率还是很不错的。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值