`
hsyzijvaa
  • 浏览: 111762 次
  • 性别: 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
分享到:
评论

相关推荐

    eclipse中castor插件

    - 安装完成后,在Eclipse的“首选项”设置中,找到Castor的相关配置,可以设定默认的映射文件路径和编译选项。 - 在项目中引入Castor的依赖库,可以通过Maven或Gradle等构建工具添加对应的依赖。 3. **数据绑定...

    spring源码编译时缺少的类cglib,objenesis,castor

    Castor是一个Java到XML数据绑定框架,它允许将Java对象序列化为XML文档,同时也可以将XML数据反序列化为Java对象。在Spring中,虽然Castor不是核心组件,但可能在处理XML配置或需要对象-XML转换的地方使用。它提供...

    apache&-&cxf;-2.5.9.zip

    此外,CXF还支持 JiBX 和Castor等其他数据绑定框架。 4. **MTOM与SWA**:CXF实现了Message Transmission Optimization Mechanism (MTOM) 和 Simple Object Access Protocol (SOAP) with Attachments (SWA),这两个...

    apache-cxf-2.4.3.rar(绿色版)

    4. **数据绑定**:CXF支持多种数据绑定技术,如JAXB(Java Architecture for XML Binding)用于将XML文档与Java对象之间进行映射,以及 JiBX 和 Castor 等其他选项。这些技术简化了XML与Java对象之间的转换工作。 5...

    Xfire框架的简单使用

    - **绑定机制**:XFire提供了多种绑定选项,如Aegis(默认)、XmlBeans、JAXB2、Castor等,满足不同场景的需求。 - **SOAP栈优化**:XFire的SOAP栈设计经过优化,确保了更高的性能表现。 - **容器集成**:XFire支持...

    cxf与axis2区别

    Apache CXF目前仅支持JAXB和Aegis,默认是JAXB 2.0,但CXF 2.1版本中将支持XMLBeans、JiBX和Castor等数据绑定。 语言支持 Axis2支持多种语言,它有C/C++版本,能够满足更多的语言需求。Apache CXF目前暂不支持多...

    JDK1.6的九大新特性

    - **其他选择**:虽然JAXB是JDK自带的工具,但开发者还可以选择其他类似的库,如XMLBeans和Castor,它们提供了类似的功能。 #### 三、理解StAX - **StAX**(Streaming API for XML)是一种新的XML处理API,旨在...

    2022年Java中关于XML的APIJava教程.docx

    Castor是另一个类似框架,仅需XML Schema即可完成绑定,支持更多的数据绑定场景。 3. **JAXM(Java API for XML Messaging)** JAXM专注于SOAP通信,提供访问方法和传输机制,支持SOAP 1.1规范以及同步和异步通信...

    XMLBEANS的使用总结[调试笔记]

    XMLBEANS是一个强大的Java库,它允许开发人员将XML文档与Java对象进行绑定,从而方便地在XML数据和Java应用程序之间进行交互。这个库基于XML Schema(XSD),提供了对XML的强大支持,包括解析、创建、操作和序列化...

    SpringMVC 使用JSON、XML视图

    4. Jibx:Jibx是一个XML绑定框架,可以将XML数据与Java对象之间进行动态绑定。 5. Jaxb2:Jaxb2是Java标准的XML绑定工具,能够自动生成Java类以映射XML Schema。 在使用这些库之前,需要确保引入了相应的jar包。...

    Spring.3.x企业应用开发实战(完整版).part2

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...

    Spring3.x企业应用开发实战(完整版) part1

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...

Global site tag (gtag.js) - Google Analytics