`
hsyzijvaa
  • 浏览: 107361 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Castor (一) -- 默认绑定

    博客分类:
  • java
阅读更多
    在mq的数据传输过程中,往往将java bean与xml进行相互转换。
 
castor是exolab group下面的一个开放源代码的项目,提供了java bean与xml之间相互转换的功能。
他提供默认方式,也支持用户diy。
 
<span style="color: #ff0000;">默认方式:</span>
<span style="color: #ff0000;">1. 基本类型属性:int,boolean等以属性的方式输出</span>
<span style="color: #ff0000;">2. 对象类型属性:以子元素的方式输出</span>
 
一. 实例
 
导入包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();		<span style="color: #000000;">marshaller.marshal(stusrc, result);</span>		system.out.println(result);				  system.out.println("==========================================================");				<span style="color: #000000;">student studist = (student) unmarshaller.unmarshal(student.class, new stringreader(result.tostring()));</span>		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/
 
0
6
分享到:
评论

相关推荐

    Castor Plug-in for Eclipse 图解使用教程

    Castor Plug-in for Eclipse 插件的使用总结,全部以截图的方式一步一步向下引导。从安装开始,到使用其产生类。这是我的学习文档,写的比较的简单,多是一些图。目的就是为了让自己以后忘了的时候,能够一眼就看懂...

    castor-1.2-xml-schema castor转化XML需要的jar包

    Castor 项目采用 BSD 类型的证书,因此可在任何类型的应用程序(包括完整版权的项目)中使用。 Castor 实际上仅仅有 XML 数据绑定,它还支持 SQL 和 LDAP 绑定

    castor-1.2系列.rar

    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

    castor-1.0-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 ...

    castor-xml-1.3.2.jar

    Unmarshall与Marshall使用的castor-xml-1.3.2.jar包

    castor-core-1.3.2

    Unmarshall与Marshall使用的jar包

    castor-1.2-examples

    castor-1.2-examples

    castor-1.2.zip

    castor-1.2.zip

    castor1-2(java and xml 数据绑定过程所需数据包)

    利用该包内提供的java类,可以进行java读取解析xml文件,并对文件进行操作

    castor-1.2-doc.zip

    castor-1.2-doc.zip

    castor-0.9.5.2.jar

    castor-0.9.5.2.jar

    castor-1.2-codegen castor代码生成需要的jar包

    Castor 项目采用 BSD 类型的证书,因此可在任何类型的应用程序(包括完整版权的项目)中使用。 Castor 实际上仅仅有 XML 数据绑定,它还支持 SQL 和 LDAP 绑定

    castor1.3 完整jar包

    完整jar 直接导入使用 Castor 是一种将Java对象和XML自动绑定的开源软件。它可以在Java对象、XML文本、SQL数据表以及LDAP目录之间绑定。

    castor-0.9.9.1.jar

    Castor的jar包 对XML的序列号更容易些!

    castor-0.9.5.3-xml.jar

    castor-0.9.5.3-xml.jar,java和xml互相转换所使用的JAR

    castor实现xsd生成javabean所需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:\...

    Java 对象XML解析器castor-0.9

    要实现的是O/R映射功能。它主要API和数据接口为:JDO-like, SQL, OQL, JDBC, LDAP, XML, DSML。它支持分布式目录事务处理和时间;提供处理XML、Directory、XADirectory的类库,提供从XML到JAVA类的转换机制。

    castor-1.2解析XML

    1、xml格式文件的用法,我们学过的xml有两种用法:一,作为配置文件。二、作为数据存储文件。 其中作为数据存储文件有很多优点,比如,数据更加规范,数据校验等。 2、这个工具的功能:能够把xml文件存储的数据和...

    castor-0.9.9.zip

    astorastorastorastorastorastorastor

    castor-xml.jar

    解析wsdl文件的好帮手,和jdom.jar,wsdl4j.jar组合,能很好的解吸wsdl文件。

Global site tag (gtag.js) - Google Analytics