- 浏览: 347496 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
孙大圣123:
大神,你分享的castor dtd文件中没有field-han ...
Castor (二) -- 自定义映射 -
ananeye:
建议举些通俗的例子,说明下。光这样讲,不好懂。
ORACLE 索引原理 -
度_java:
1.不在不同的机器上实现集群功能,除非他们的时钟同步精确到秒。 ...
Quartzs -- Quartz.properties 配置 -
2047699523:
可以参考最新的文档:如何在eclipse jee中检出项目并转 ...
MAVEN3--(三)创建MAVEN项目 -
qgm168:
写的不错,借用啦,哈哈,多谢!
自定义POI EXCEL模板
在MQ的数据传输过程中,往往将JAVA BEAN与XML进行相互转换。
Castor是ExoLab Group下面的一个开放源代码的项目,提供了JAVA BEAN与XML之间相互转换的功能。
他提供默认方式,也支持用户DIY。
默认方式:
1. 基本类型属性:int,boolean等以属性的方式输出
2. 对象类型属性:以子元素的方式输出
一. 实例
导入包castor-1.2-xml.jar以及它的依赖包commons-logging-1.1.1.jar,xerces.jar(xerces-1_4_4)
注:现在最新的castor版本为1.3.2,但是是JDK6环境下编译的,所以需要在JDK6下才能运行
Address.java
package com.siyuan.castor; public class Address { private String street; /** * @return the street */ public String getStreet() { return street; } /** * @param street the street to set */ public void setStreet(String street) { this.street = street; } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { // TODO Auto-generated method stub return "Address[street=" + street +"]"; } }
Student.java
package com.siyuan.castor; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; public class Student { private int age; private boolean male; private String name; private Address address; private Date birthday; private Student girlFriend; private Set<Student> friends = new HashSet<Student>(); private List<String> subjects = new ArrayList<String>(); private Map<String, String> teachers = new HashMap<String, String>(); public Student() { } public Student(String name) { this.name = name; } /** * @return the age */ public int getAge() { return age; } /** * @param age the age to set */ public void setAge(int age) { this.age = age; } /** * @return the mail */ public boolean isMale() { return male; } /** * @param mail the mail to set */ public void setMale(boolean male) { this.male = male; } /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { this.name = name; } /** * @return the address */ public Address getAddress() { return address; } /** * @param address the address to set */ public void setAddress(Address address) { this.address = address; } /** * @return the friends */ public Set<Student> getFriends() { return friends; } /** * @param friends the friends to set */ public void setFriends(Set<Student> friends) { this.friends = friends; } public void addFriend(Student friend) { friends.add(friend); } /** * @return the girlFriend */ public Student getGirlFriend() { return girlFriend; } /** * @param girlFriend the girlFriend to set */ public void setGirlFriend(Student girlFriend) { this.girlFriend = girlFriend; } /** * @return the subjects */ public List<String> getSubjects() { return subjects; } public void addSubject(String subject) { subjects.add(subject); } /** * @return the teachers */ public Map<String, String> getTeachers() { return teachers; } /** * @return the teachers */ public void setTeachers(Map<String, String> teachers) { this.teachers = teachers; } /** * @return the birthday */ public Date getBirthday() { return birthday; } /** * @param birthday the birthday to set */ public void setBirthday(Date birthday) { this.birthday = birthday; } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { // TODO Auto-generated method stub return "Student[name=" + name + ",age=" + age + ",male=" + male + ",birthday=" + birthday +",\n" + "address=" + address + ",\n" + "girlFriend=" + girlFriend + ",\n" + "friends=" + friends + ",\n" + "subjects=" + subjects + ",\n" + "teachers=" + teachers + "\n" + "]"; } }
CastorTest.java
package com.siyuan.castor.test; import java.io.StringReader; import java.io.StringWriter; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import org.exolab.castor.xml.MarshalException; import org.exolab.castor.xml.Marshaller; import org.exolab.castor.xml.Unmarshaller; import org.exolab.castor.xml.ValidationException; import com.siyuan.castor.Address; import com.siyuan.castor.Student; public class CastorTest { /** * @param args * @throws ValidationException * @throws MarshalException * @throws ValidationException * @throws MarshalException */ public static void main(String[] args) throws MarshalException, ValidationException{ Student stuSrc = new Student(); stuSrc.setAge(22); stuSrc.setName("SingleMan"); stuSrc.setMale(true); Address address = new Address(); address.setStreet("Renmin Road"); stuSrc.setAddress(address); DateFormat dateFmt = new SimpleDateFormat("yyyy-MM-DD"); try { Date birthday = dateFmt.parse("1988-11-21"); stuSrc.setBirthday(birthday); } catch (ParseException e) { e.printStackTrace(); } Student girl = new Student(); girl.setAge(20); stuSrc.setGirlFriend(girl); Set<Student> students = new HashSet<Student>(); Student stu1 = new Student(); stu1.setAge(21); students.add(stu1); Student stu2 = new Student(); stu2.setAge(23); students.add(stu2); stuSrc.addSubject("English"); stuSrc.addSubject("Math"); stuSrc.addSubject("Chinese"); Map<String, String> teachers = new HashMap<String, String>(); teachers.put("English", "teacher a"); teachers.put("Chinese", "teacher b"); stuSrc.setTeachers(teachers); StringWriter result = new StringWriter(); Marshaller.marshal(stuSrc, result); System.out.println(result); System.out.println("=========================================================="); Student stuDist = (Student) Unmarshaller.unmarshal(Student.class, new StringReader(result.toString())); System.out.println(stuDist); } }
2.运行结果
<?xml version="1.0" encoding="UTF-8"?> <student male="true" age="22"><name>SingleMan</name><teachers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="java:org.exolab.castor.mapping.MapItem"><key xsi:type="java:java.lang.String">English</key><value xsi:type="java:java.lang.String">teacher a</value></teachers><teachers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="java:org.exolab.castor.mapping.MapItem"><key xsi:type="java:java.lang.String">Chinese</key><value xsi:type="java:java.lang.String">teacher b</value></teachers><girl-friend male="false" age="20"/><subjects xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="java:java.lang.String">English</subjects><subjects xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="java:java.lang.String">Math</subjects><subjects xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="java:java.lang.String">Chinese</subjects><address><street>Renmin Road</street></address><birthday>1988-01-21T00:00:00.000+08:00</birthday></student> ============================================================ Student[name=SingleMan,age=22,male=true,birthday=Thu Jan 21 00:00:00 CST 1988, address=Address[street=Renmin Road], girlFriend=Student[name=null,age=20,male=false,birthday=null, address=null, girlFriend=null, friends=[], subjects=[], teachers={} ], friends=[], subjects=[English, Math, Chinese], teachers={English=teacher a, Chinese=teacher b} ]
3.参考资料
http://www.ibm.com/developerworks/cn/xml/x-bindcastor/
发表评论
-
自定义POI EXCEL模板
2013-07-01 17:51 23101.背景 项目中需要将相关数据导出为EXCEL文件,该文 ... -
POI操作EXCEL
2013-07-01 15:55 9741.简介 Apache POI是Apache软件基金会的开 ... -
JSON-LIB
2013-06-30 15:44 16291.关于JSON JSON(JavaScript Obj ... -
Jasperreport应用小结
2013-06-19 23:15 14241.简介 JasperReport是一 ... -
JAVA实现FTP
2013-06-09 09:05 151001.关于FTP FTP:File Transfe ... -
Digester解析的顺序
2013-03-11 18:07 14461.说明 本文将通过一段代码来说明Digester解析X ... -
ONGL介绍
2012-10-16 17:02 58891.简介 OGNL:Object Graph Navi ... -
MyBatis(一)----基础使用
2012-06-10 22:24 9201.简介 --MyBatis是支持普通SQL查询,存储 ... -
SMOOKS--XSL
2012-06-07 13:33 30851.简介 Smooks是一个用于出力XML和非XML数 ... -
Log4j
2012-05-25 15:28 10771。简介 Log4j是一个应 ... -
commons-logging
2012-05-23 22:25 1054一。简介 commons-logging是Apache下的一 ... -
JFreeChart -- Web应用
2012-01-06 00:26 10171) Model index.jsp < ... -
JUnit -- 分析
2011-12-11 18:08 9901.类结构图 Assert : 大量的ass ... -
Quartzs -- JDBC-JobStore - Oracle 实现 + Cluster
2011-09-13 16:44 4485数据库 从%QUARTZ_HOME%/docs/dbTa ... -
Quartzs -- Quartz.properties 配置
2011-09-13 11:23 46252文件加载位置 默认:优先顺序 Classpath: ... -
StringTemplate学习笔记(四) StringTemplateGroup文件
2011-08-27 10:31 3500一,简介 StringTemplateGroup ... -
StringTemplate学习笔记(三) st文件加载
2011-08-22 22:40 4368一,简介 ST通过StringTemplateGr ... -
StringTemplate学习笔记(二) 语法
2011-08-21 16:11 10941一,分隔符,注释 <...>貌似只能在Stri ... -
StringTemplate学习笔记(一) 简介
2011-08-21 09:47 2601一,简介 StringTemplate(简称ST ... -
Castor (二) -- 自定义映射
2011-08-03 23:33 39031.概述 Castor的自定义映射关系通过XML设置。 ...
相关推荐
Castor Plug-in for Eclipse 插件的使用总结,全部以截图的方式一步一步向下引导。从安装开始,到使用其产生类。这是我的学习文档,写的比较的简单,多是一些图。目的就是为了让自己以后忘了的时候,能够一眼就看懂...
Castor 项目采用 BSD 类型的证书,因此可在任何类型的应用程序(包括完整版权的项目)中使用。 Castor 实际上仅仅有 XML 数据绑定,它还支持 SQL 和 LDAP 绑定
castor-1.2.jar 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
org.castor.util.IdentityMap org.castor.util.IdentitySet org.exolab.javasource.JEnum org.exolab.javasource.JType org.exolab.castor.util.List org.exolab.javasource.Header org.exolab.javasource.JClass ...
Unmarshall与Marshall使用的castor-xml-1.3.2.jar包
Unmarshall与Marshall使用的jar包
castor-1.2-examples
castor-1.2.zip
利用该包内提供的java类,可以进行java读取解析xml文件,并对文件进行操作
castor-1.2-doc.zip
castor-0.9.5.2.jar
Castor 项目采用 BSD 类型的证书,因此可在任何类型的应用程序(包括完整版权的项目)中使用。 Castor 实际上仅仅有 XML 数据绑定,它还支持 SQL 和 LDAP 绑定
完整jar 直接导入使用 Castor 是一种将Java对象和XML自动绑定的开源软件。它可以在Java对象、XML文本、SQL数据表以及LDAP目录之间绑定。
Castor的jar包 对XML的序列号更容易些!
castor-0.9.5.3-xml.jar,java和xml互相转换所使用的JAR
java -classpath D:\xsd/castor-1.2-anttasks.jar;D:\xsd/castor-1.2-codegen.jar;D:\xsd/commons-logging-1.1.jar;D:\xsd/castor-1.2-ddlgen.jar;D:\xsd/castor-1.2-jdo.jar;D:\xsd/castor-1.2-xml-schema.jar;D:\...
要实现的是O/R映射功能。它主要API和数据接口为:JDO-like, SQL, OQL, JDBC, LDAP, XML, DSML。它支持分布式目录事务处理和时间;提供处理XML、Directory、XADirectory的类库,提供从XML到JAVA类的转换机制。
1、xml格式文件的用法,我们学过的xml有两种用法:一,作为配置文件。二、作为数据存储文件。 其中作为数据存储文件有很多优点,比如,数据更加规范,数据校验等。 2、这个工具的功能:能够把xml文件存储的数据和...
astorastorastorastorastorastorastor
解析wsdl文件的好帮手,和jdom.jar,wsdl4j.jar组合,能很好的解吸wsdl文件。