服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

jaxb的使用方法


     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>
     <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!
  这就结束了吗?这莫简单嘛?
  没错,就是这莫简单。并且运行效率还是很不错的

扫描关注微信公众号