[XML]castor: java对象与xml间的转换
来源:互联网 发布:windows iso镜像下载 编辑:程序博客网 时间:2024/04/30 21:54
原文链接:http://hi.baidu.com/jidongxx/blog/item/752cd61b3038fcfdaf51339d.html
说明:交换数据时,可以考虑使用castor,把Java对象的转换成xml 进行远程传递【代替序列化】
参考中说:castor和xmlbeans这种都是先定义schema,然后根据schema来generate java class,然后调用marshall和unmarshall方法来序列化javabean。这是属于重量级的方法,虽然功能强大,使用却不方便。如果你改了schema,势必要重新generate,这样你就不能在generate的java class上加上自己的方法。导致生成的java class纯粹用于serialize
使用过程:
1. 根据应用逻辑, 编写xml schema文件。示例如下:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://dhgate.com/Test/ProductPromotionAd">
<xs:element name="ProductPromotionAdResultItem">
<xs:complexType>
<xs:sequence>
<xs:element name="itemcode" type="xs:string"/>
<xs:element name="hasPromotionAd" type="xs:boolean"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ProductPromotionAdResults">
<xs:complexType>
<xs:sequence>
<xs:element ref="ProductPromotionAdResultItem" maxOccurs="unbounded" minOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
2.castor 根据xml schema 生成JavaBean;编写类似的脚本如下:
@echo off
REM Change the following line to set your JDK path
set JAVA_HOME=%JAVA_HOME%
set JAVA=%JAVA_HOME%/bin/java
set JAVAC=%JAVA_HOME%/bin/javac
@echo Create the classpath
set CP=.
for %%i in (../../../lib/*.jar) do set CP=%CP%;%%i
set CP=%CP%;../../../build/classes;%JDK_BIN%/lib/tools.jar
@echo.
@echo Using classpath: %CP%
@echo Castor Test Cases
@echo.
@echo Generating classes...
@rem Java 2 style collection types
@rem %JAVA% org.exolab.castor.builder.SourceGeneratorMain -i productPromotionAd.xsd -f -types j2
@rem Java 1.1 collection types
%JAVA% -cp %CP% org.exolab.castor.builder.SourceGeneratorMain -i productPromotionAd.xsd -f
或者利用ant生成,其代码段示例为:
<target name="generateCastorClasses" depends=".">
<java classname="org.exolab.castor.builder.SourceGenerator">
<arg line="-dest '${dir}/source' -i '${dir}/config/Export.xsd' -f -package com.object" />
<classpath>
<fileset dir="${dir}/lib">
<include name="*.jar" />
</fileset>
</classpath>
</java>
</target>
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.getProductPromotionAdResultItemCount(); i++) {
System.out.println(readXml.getProductPromotionAdResultItem(i).getItemcode() + "-->" +
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; i<3; i++) {
ProductPromotionAdResultItem item = new ProductPromotionAdResultItem();
item.setItemcode(i + "");
item.setHasPromotionAd(true);
resultXml.addProductPromotionAdResultItem(item);
System.out.println("write finished");
}
resultXml.marshal(w);
}catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
//writeTest();
readTest();
}
}
附录:需要的包
castor-1.2-anttasks.jar
castor-1.2-codegen.jar
castor-1.2-ddlgen.jar
castor-1.2-jdo.jar
castor-1.2-xml-schema.jar
castor-1.2-xml.jar
castor-1.2.jar
commons-collections-3.2.jar
commons-lang-2.1.jar
commons-logging-1.1.jar
derby-10.1.2.1.jar
jdbc-se2.0.jar
jta1.0.1.jar
log4j-1.2.8.jar
velocity-dep-1.5.jar
xerces-J_1.4.0.jar
- [XML]castor: java对象与xml间的转换
- 使用Castor工具完成Java对象与XML之间的相互转换
- Castor实现XML与Java的互转
- java对象与xml的转换
- xml与java对象的相互转换
- Java对象与XML的相互转换
- xml与Java对象的转换
- xml-xml与java对象之间的转换(jaxb)
- Castor XML
- Castor XML
- xml与对象的转换
- XML 与 Java 技术: 用 Castor 进行数据绑定
- XML 与 Java 技术: 用 Castor 进行数据绑定
- XML 与 Java 技术: 用 Castor 进行数据绑定
- XML 与 Java 技术: 用 Castor 进行数据绑定
- XML 与 Java 技术: 用 Castor 进行数据绑定
- XML 与 Java 技术: 用 Castor 进行数据绑定
- 用Castor进行java到xml的绑定
- 学知网注册
- 10个技巧帮你搞定IE 6
- VC中为按钮添加图片的方法
- blog访问量首次进入前1W名
- SQL 2008中XML的新增功能
- [XML]castor: java对象与xml间的转换
- XML序列化和反序列化集合示例
- 合并算法求逆序对
- js 写lightbox效果[实例]
- [XML]XML与JavaBean的映射
- C#判断程序是否在运行
- SQL查询区分大小写
- [XML]XMLBEAN 的使用工作日志
- 局域网P2P技术实现