本节摘要:本节主要介绍Castor插件的使用。
preparation
1.castor简介
castor是一种将java对象和XML自动绑定的开源软件。它可以在java对象、XML文本、SQL数据表以及LDAP目录之间绑定。Castor几乎是JAXB的替代品。Castor是ExoLab Group下面的一个开放源代码的项目,它主要实现的是O/R映射功能。它主要API和数据接口为:JDO-like, SQL, OQL, JDBC, LDAP, XML, DSML。它支持分布式目录事务处理和时间;提供处理XML、Directory、XADirectory的类库,提供从XML到JAVA类的转换机制。Castor(http://castor.exolab..org/)是一种将Java对象和XML自动绑定的开源软件。它可以在Java对象、XML文本、SQL数据表以及LDAP目录之间绑定。
2.下载需要用到的jar包
castor-1.0.1-xml.jar包下载地址:
http://www.castor.org/download.html
xercesImpl.jar包下载地址:
http://archive.apache.org/dist/xml/xerces-j/
也可以从下面的链接下载,以上两个jar包我都已经上传
https://files.cnblogs.com/java-pan/castor.rar
3.项目环境
system:win7 myeclipse:6.5 Tomcat:5.0 JDK:1.5 castor:1.0
项目结构图如下:
4.class&method
start
castor第一种用法:不使用xml配置文件
代码如下:
核心转换类--->DefaultCastor.java
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
使用的javabean--->UserInfo.java
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
测试效果:
运行DefaultCastor.java类中的main方法,在控制台以及/src/com/castor/def/目录下查看生成的XML文件
控制台:
生成的xml文件test.xml效果如图:
castor第二种用法:使用xml配置文件
代码如下:
javabean--->Book.java
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
javabean--->Author.java
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
配置文件--->book-mapping.xml
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
格式化相关类
读和写XML文件--->OperationFile.java
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
格式化XML类--->FormatXML.java
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
测试类(java转xml)---BookMapMarshaller.java
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
测试效果:
运行BookMapMarshaller.java类中的main方法,在控制台以及/src/com/castor/def/目录下查看生成的XML文件
控制台:
生成的xml文件 book-result.xml效果如下:
result
note.txt文件是使用castor过程中遇到的一些文件以及相应的解决方法
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory at org.exolab.castor.util.Configuration.<clinit>(Configuration.java:101) at org.exolab.castor.xml.Marshaller.initialize(Marshaller.java:379) at org.exolab.castor.xml.Marshaller.<init>(Marshaller.java:337) at com.castor.TestCastor.main(TestCastor.java:24) Exception in thread "main" 解决方案:导入commons-logging.jar包
java.lang.RuntimeException: Could not instantiate serializer org.apache.xml.serialize.XMLSerializer: java.lang.ClassNotFoundException: org.apache.xml.serialize.XMLSerializer at org.exolab.castor.xml.XercesSerializer.<init>(XercesSerializer.java:50) at org.exolab.castor.xml.XercesXMLSerializerFactory.getSerializer(XercesXMLSerializerFactory.java:31) at org.exolab.castor.util.LocalConfiguration.getSerializer(LocalConfiguration.java:531) at org.exolab.castor.xml.Marshaller.<init>(Marshaller.java:339) at com.castor.TestCastor.main(TestCastor.java:24) Exception in thread "main" 解决方案:有些地方说是JDK1.5以下因为没有集成XMLSerializer类,故会报这个错误,但是我改为JDK1.5还是报这个错误 正确的解决方法是导入xercesImpl.jar包,jar包的下载路径如下为:http://archive.apache.org/dist/xml/xerces-j/