java对象与xml间的转换.docx_第1页
java对象与xml间的转换.docx_第2页
java对象与xml间的转换.docx_第3页
java对象与xml间的转换.docx_第4页
java对象与xml间的转换.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

castor: java对象与xml间的转换2008-10-30 10:33说明:交换数据时,可以考虑使用castor,把Java对象的转换成xml 进行远程传递【代替序列化】 参考中说:castor和xmlbeans这种都是先定义schema,然后根据schema来generate java class,然后调用marshall和unmarshall方法来序列化javabean。这是属于重量级的方法,虽然功能强大,使用却不方便。如果你改了schema,势必要重新generate,这样你就不能在generate的java class上加上自己的方法。导致生成的java class纯粹用于serialize使用过程:1. 根据应用逻辑, 编写xml schema文件。示例如下: 2.castor 根据xml schema 生成JavaBean;编写类似的脚本如下:echo offREM Change the following line to set your JDK pathset JAVA_HOME=%JAVA_HOME%set JAVA=%JAVA_HOME%binjavaset JAVAC=%JAVA_HOME%binjavacecho Create the classpathset CP=.for %i in (.lib*.jar) do set CP=%CP%;%iset CP=%CP%;.buildclasses;%JDK_BIN%libtools.jarecho.echo Using classpath: %CP%echo Castor Test Casesecho.echo Generating classes.rem Java 2 style collection typesrem %JAVA% org.exolab.castor.builder.SourceGeneratorMain -i productPromotionAd.xsd -f -types j2rem Java 1.1 collection types%JAVA% -cp %CP% org.exolab.castor.builder.SourceGeneratorMain -i productPromotionAd.xsd -f或者利用ant生成,其代码段示例为:3. 客户服务器端使用JavaBean, 传输时, 服务器端把JavaBean Marshall 成xml, 客户端把xml unmarshall成 JavaBean测试代码如下:public class TestCastorXml private static void readTest() try ProductPromotionAdResults readXml = ProductPromotionAdResults.unmarshal(new FileReader(e:text.xml); for(int i=0; i + readXml.getProductPromotionAdResultItem(i).getHasPromotionAd(); catch(Exception e) e.printStackTrace(); private static void writeTest() try Writer w = new FileWriter(e:text.xml); ProductPromotionAdResults resultXml=new ProductPromotionAdResults(); for(int i=0; icd C:jaxb2.1.9bin 回车3:输入xjc c:students.xsd -d c:src -p com.entity 回车注:-d 说明要生成的java类存放目录 -p 为生成java类指定的包名 students.xsd 为自己定义的Schemajaxb配置及使用过程2007-10-16 09:01 接触jaxb是因为项目中需要使用xml模式,并通过网络传送xml文件的内容,听同学说他在单位实习时用jaxb工具实现xml模式到java类的映射,这样可以通过操纵java类来实现对xml文档的控制,屏蔽了用dom或者sax解析器的一些内容,使操作更为简单。 实际上jaxb是业界提出的一个模式与java类之间转化的一个标准,我们下载的jaxb工具,是Sun公司针对此标准开发的一个工具而已。首先要了解jaxb的优点,因为接触的还少,所以只是有一些肤浅的认识,利用jaxb可以方便的根据xml模式得到一些java类,这些类中不但包括了xml模式中提到的元素和类型,还提供了一些应用程序可以利用该些类的方法方法,可以方便的在xml文档和java对象树之间进行转换。 使用该工具,遇到的第一个问题就是工具的安装,在同学的帮助下还弄了两天,真是弄的有些抓狂了,不过确实感觉学到了很多东西,真的很感谢我的同学不厌其烦的给我讲解。 下面主要介绍一下jaxb的安装问题,我用的是eclipse开发项目,jaxb版本为JAXB2。0在此之前我对eclipse的了解特别少 只用其编过特别简单的程序,所以安装过程中出现的大多数问题都是因为我对classpath和eclipse的工作方式不了解造成的。 首先,将下载来的jaxb2.o解压,得到jaxb2_20061115.jar,在eclipse中新建一个工程jaxbtest,在该工程中新建一个文件夹,用右键单击该工程名字,点击newFile 然后输入文件名字jaxb,然后把jaxb2_20061115.jar粘贴到该文件夹下,用右键单击该文件夹的名称jaxb,点击paste,则jaxb2_20061115.jar就会在该文件夹下了 第二步,根据需要建立xmlschema.xsd,完成后在该工程下在建立一个文件夹,点击newFile命名为schema,然后将xmlschema.xsd粘贴到该文件夹下,如上步,这么作的原因是为了找该些文件方便,也就是说并不是必须的 第三步,在命令行模式下,将目录转到jaxb2_20061115.jar,用命令java jar jaxb2_20061115.jar这样,在该目录下会生成一个文件夹jaxb-ri-20061115,将其打开后,有bin、lib、docs等文件夹对我们真正有用的是bin和lib,此时右键点击工程名字,点击refresh(如果不刷新,则eclipse在工程下不会显示该文件夹的),此工程下就会出现jaxb-ri-20061115文件夹,然后打开此文件夹,点击bin文件夹,点击右键建立文件start。bat,双击start.bat,在其中添加如下内容xjc d “生成的类所存放的路径(在该工程下的某个文件里,但此文件必须自己先建立)” p “生成的类所在的包的名字(自己定义)” “xml模式所在的路径xmlschema.xsd“然后双击start.bat,生成对应该模式的java类,生成过程中会检查schema的正确性,可能出现xml模式中书写错误,有的标准不支持等,改好后重新运行start。bat 第四步 运行start.bat后,会在所指定的目录下生成java类,然后仍右键工程名字,点击refresh所生成的包就在工程中了,在点击refresh的过程中,eclipse会自动编译新刷新出来的类,会在该包内生成相应的.class文件,在eclipse中点击保存也会进行重新编译的。注意:使用start.bat的目的就是当我们的xml模式改变时,直接点击start.bat就行,简单且不容易出错,会自动生成相应的java类 第五步 编写自己的应用程序,利用生成的java类,包括将java类数组织到xml文件中和将xml文件中的内容编程java数,再使用了jaxb后都将变得容易,而起,支持流的形式,可以是文件流,也可以是网络传送过来的流。以上就是安装过程,我在安装时遇到的主要问题是:1:当执行xjc命令时,并没有在工程下建立src文件,而在命令中却用到了“工程路径src”这样,生成的包名编程了src.(),括号中的是命令中指定的包名2:生成新的内容后,在eclipse中并没有refresh,所以并没有进行编译生成的类,工程中也不认为有该些类,所以,在引用这些类的对象时,报错,说该类不存在3:在装此版本的jaxb之前,我还弄了一个其他版本的,并设定的环境变量,在上述介绍的版本中我并没有看xjc的配置文件,里面写着,如果设置了JAXB_HOME环境变量,在执行此命令的时候,会调用该变量下的包,没有设置在到当前目录下的lib文件找xjc.jar,而我设置的版本并不是我真正想用的,所以出现了我以为我是在用我希望的版本,而实际上是在用环境变量里设置的版本了,而恰恰,环境变量里设置的版本生成的java类与我的编译器不相容,所以耽误了很长时间,所以以后要养成看配置文件的好习惯。记住:1.想要引用外来的包,必须对其进行正确编译 2.eclipse会自动搜索jdk的jre,如果你自己重新安装了jdk,虽然在环境变量里更改了JAVA_HOME,而没在eclipse里更改的话,eclipse仍然用原来的jdk进行编译,在eclipse里更改的方法为 Wind

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论