使用Castor工具完成Java对象与XML之间的相互转换

作者:小菜 更新时间:2025-03-16 点击数:
简介:这里将介绍Castor来完成Java对象到xml的相互转换。

它是怎么样转换的?和前面不同的是castor可以用一个mapping.xml文件来描述转换后的Jav

【菜科解读】

这里将介绍Castor来完成Java对象到xml的相互转换。

它是怎么样转换的?和前面不同的是castor可以用一个mapping.xml文件来描述转换后的Java对象的xml基本形态,类似于xStream的annotation,这点还是非常不错的。

下面我们就来看看Castor是怎么样完成Java对象到XML之间的相互转换吧。

一、 准备工作

1、 官方资源

本示例会运用到如下依赖包(jar包):

资源及jar包下载:http://www.castor.org/download.html

junit jar下载地址:

https://github.com/KentBeck/junit/downloads

关于官方提供的mapping配置相关示例、文档:

http://www.castor.org/xml-mapping.html

ibm提供的castor方面的文档资料:

http://www.google.com.hk/search?hl=zh-CN&newwindow=1&safe=strict&client=aff-cs-360se&hs=Gon&biw=1349&bih=603&q=castor+site%3Awww.ibm.com%2Fdeveloperworks%2Fcn%2Fxml%2F&aq=f&aqi=&aql=&oq=

2、 程序测试运行代码

package com.hoo.test;import java.io.IOException;import java.io.StringReader;import java.io.StringWriter;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.exolab.castor.mapping.Mapping;import org.exolab.castor.mapping.MappingException;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 org.junit.After;import org.junit.Before;import org.junit.Test;import com.hoo.entity.Account;import com.hoo.entity.AccountArray;import com.hoo.entity.Birthday;import com.hoo.entity.ListBean;import com.hoo.entity.MapBean;/** * function:Castor完成Java对象到XML的相互转换 * 依赖jar: castor-1.3.jar * castor-1.3-core.jar * junit-4.8.2.jar * log4j-1.2.16.jar * commons-logging.jar * @author hoojo * @createDate 2011-4-21 下午07:57:26 * @file CastorTest.java * @package com.hoo.test * @project WebHttpUtils * @blog http://blog.csdn.net/IBM_hoojo * @email hoojo_@126.com * @version 1.0 */public class CastorTest { private Account bean = null; private Mapping mapping = new Mapping(); private StringWriter writer = null; private StringReader reader = null; @Before public void init() { bean = new Account(); bean.setAddress("北京"); bean.setEmail("email"); bean.setId(1); bean.setName("jack"); Birthday day = new Birthday(); day.setBirthday("2010-11-22"); bean.setBirthday(day); try { /** * 加载mapping.xml,此文件是对需要转换的Java对象的配置描述, * 即:转换后的Java对象的xml内容的转换规则 */ mapping.loadMapping(System.getProperty("user.dir") + "\\src\\mapping.xml"); } catch (IOException e) { e.printStackTrace(); } catch (MappingException e) { e.printStackTrace(); } } @After public void destory() { bean = null; mapping = null; try { if (writer != null) { writer.flush(); writer.close(); } if (reader != null) { reader.close(); } } catch (IOException e) { e.printStackTrace(); } System.gc(); } public void fail(Object o) { System.out.println(o); } public void failRed(Object o) { System.err.println(o); }}

Mapping对象可以完成Java对象到XML的编组和解组,它需要先设定一个mapping.xml,通过xml对JavaObject的描述。

来完成JavaObject的编组、解组工作。

3、 看看即将被转换的JavaEntity代码

Account

package com.hoo.entity;public class Account { private int id; private String name; private String email; private String address; private Birthday birthday; //setter、getter @Override public String toString() { return this.id + "#" + this.name + "#" + this.email + "#" + this.address + "#" + this.birthday; }}

Birthday

package com.hoo.entity;public class Birthday { private String birthday; public Birthday(String birthday) { super(); this.birthday = birthday; } //getter、setter public Birthday() {} @Override public String toString() { return this.birthday; }}

AccountArray

package com.hoo.entity;public class AccountArray { private Account[] accounts; private int size; public int getSize() { size = accounts.length; return size; } public void setSize(int size) { this.size = size; } public Account[] getAccounts() { return accounts; } public void setAccounts(Account[] accounts) { this.accounts = accounts; }}

ListBean

package com.hoo.entity;import java.util.List;public class ListBean { private String name; private List list; //setter、getter}

MapBean

package com.hoo.entity;import java.util.Map;public class MapBean { private Map map; public Map getMap() { return map; } public void setMap(Map map) { this.map = map; }}

二、 编组JavaObject到XML

1、 将JavaBean编组,转换成XML

/** * function:将Javabean编组,转换成XML * @author hoojo * @createDate 2011-4-22 下午12:08:48 */@Testpublic void writeBean2XML() { writer = new StringWriter(); try { //编组 Marshaller.marshal(bean, writer); fail(writer); } catch (MarshalException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); }}

代码很简单,通过Marshaller的marshal方法来完成Java对象到XML的编组(序列化、转换)工作。

运行后的结果如下:

?xml version="1.0" encoding="UTF-8"?> 下一篇:

收藏备用!云南楚雄社保卡里的个账的钱如何给家人使用?(25年4月18日)

社会保险是一种强制性的社会保险体系,旨在为劳动者提供必要的生活保证和支持。

企业和个人都有义务按照相关法规缴纳相应的社会保险费用,这部分费用将用于建立和维护公共福利体系。

云南楚雄社保卡里的凭证到底怎么给家人使用?能直接用家人的社保卡看病吗?随新社通小编来了解一下:云南楚雄社保卡怎么共享给家人?家庭成员共享如何绑定?社保卡怎么给家人用?绑定流程及方法社保卡里的余额给家人使用,主要可以通过以下几种方式实现:一、电子社保卡亲情服务此外,还可以通过电子社保卡的亲情服务功能,为家人提供便捷的电子社保卡签发和应用服务。

具体步骤如下:打开电子社保卡首页,点击右上角“我的”-“亲情服务”。

点击“添加”,验证电子社保卡密码后,阅读并同意添加亲情账户告知书。

输入要开通人的姓名、社保号码、亲情关系,点击“添加亲情账户”并上传身份凭证(小于16岁需同时上传人脸正面照)。

亲情服务绑定对象进行人脸识别操作,认证通过后则开通亲情服务成功。

通过电子社保卡亲情服务,可以帮家人查询个人社保权益单、进行社保待遇资格认证、办理社保网上转移申请等,同时也可以使用社保卡里的余额。

二、社保卡绑定家人通过社保卡的家庭共享功能,可以将社保卡的余额绑定给家人使用。

具体操作步骤如下:社会保险服务个人网页自助办理:登陆个人网页,进入社保业务办理-医疗业务办理-个人账户家庭共享-新增绑定,输入亲属社保电脑号、亲属身份证号及亲属关系,提交保存,即完成绑定。

到社保分局医疗保险窗口申请办理:在社保部门医保现金报销窗口刷卡绑定,刷被使用人的社保卡,并录入使用人的社保卡号。

在定点医院医疗保险办公室办理:在医院医保办,通过“网上医院”刷卡绑定,刷被使用人的卡,并录入使用人的社保卡号。

完成绑定后,家人在就医时就可以使用社保卡里的余额进行支付了。

需要注意的是,社保卡里的余额属于个人所有,给家人使用时需确保符合要求,不得进行违法违规操作。

另外,不同地区的社保卡使用可能有所不同,具体操作方法还需根据当地而定。

云南楚雄社保缴费比例是多少?关于云南楚雄“五险一金”缴纳比例的问题养老保险:单位16%,个人8%。

医疗保险:个人交纳2%,单位交纳10%; 失业保险:单位缴费比例为1.5%,个人缴纳比例为0.5%。

生育保险:已经并入医疗保险,不再单独缴纳。

用人单位缴纳工伤保险的比例一般是0.5%到1.5%,而职工个人不需要缴纳工伤保险费。

公积金的缴纳比例一般为:单位缴纳比例:5%,员工缴纳比例:5%。

目前首批开通个人账户跨省家庭共济的地区(统筹区)有哪些?1、重庆市(云阳县)2、山东省(德州市)3、甘肃省(临夏回族自治州)4、河北省(石家庄市、唐山市、秦皇岛市、邯郸市、邢台市、保定市、张家口市、承德市、沧州市、廊坊市、衡水市、辛集市、定州市、雄安新区、省本级)5、江苏省(苏州市)6、四川省(省本级、成都市、广安市)7、安徽省(淮南市)8、湖北省(襄阳市、黄冈市、咸宁市、随州市、恩施土家族苗族自治州、潜江市)9、河南省(郑州市、信阳市)共31个地区(统筹区)已开通个人账户跨省共济使用。

海南琼海社保卡里的医疗保险凭证到底如何给家人使用?能直接用家人的社保卡看病吗?(25/04/18)

社会保险是一种为丧失劳动能力、暂时失去劳动岗位或因健康原因造成损失的人口提供收入或补偿的一种社会和经济体系。

社会保险的主要项目包括养老保险、医疗保险、失业保险、工伤保险、生育保险。

海南琼海社保卡里的凭证到底怎么给家人使用?能直接用家人的社保卡看病吗?随新社通小编来了解一下:海南琼海社保卡里的医疗保险凭证到底怎么给家人使用?社保卡里的余额怎么给家人使用社保卡里的余额给家人使用,主要可以通过以下几种方式实现:一、社保卡绑定家人通过社保卡的家庭共享功能,可以将社保卡的余额绑定给家人使用。

具体操作步骤如下:社会保险服务个人网页自助办理:登陆个人网页,进入社保业务办理-医疗业务办理-个人账户家庭共享-新增绑定,输入亲属社保电脑号、亲属身份证号及亲属关系,提交保存,即完成绑定。

到社保分局医疗保险窗口申请办理:在社保部门医保现金报销窗口刷卡绑定,刷被使用人的社保卡,并录入使用人的社保卡号。

在定点医院医疗保险办公室办理:在医院医保办,通过“网上医院”刷卡绑定,刷被使用人的卡,并录入使用人的社保卡号。

完成绑定后,家人在就医时就可以使用社保卡里的余额进行支付了。

二、电子社保卡亲情服务此外,还可以通过电子社保卡的亲情服务功能,为家人提供便捷的电子社保卡签发和应用服务。

具体步骤如下:打开电子社保卡首页,点击右上角“我的”-“亲情服务”。

点击“添加”,验证电子社保卡密码后,阅读并同意添加亲情账户告知书。

输入要开通人的姓名、社保号码、亲情关系,点击“添加亲情账户”并上传身份凭证(小于16岁需同时上传人脸正面照)。

亲情服务绑定对象进行人脸识别操作,认证通过后则开通亲情服务成功。

通过电子社保卡亲情服务,可以帮家人查询个人社保权益单、进行社保待遇资格认证、办理社保网上转移申请等,同时也可以使用社保卡里的余额。

需要注意的是,社保卡里的余额属于个人所有,给家人使用时需确保符合要求,不得进行违法违规操作。

另外,不同地区的社保卡使用可能有所不同,具体操作方法还需根据当地而定。

目前首批开通个人账户跨省家庭共济的地区(统筹区)有哪些?1、河南省(郑州市、信阳市)2、甘肃省(临夏回族自治州)3、山东省(德州市)4、安徽省(淮南市)5、重庆市(云阳县)6、四川省(省本级、成都市、广安市)7、湖北省(襄阳市、黄冈市、咸宁市、随州市、恩施土家族苗族自治州、潜江市)8、河北省(石家庄市、唐山市、秦皇岛市、邯郸市、邢台市、保定市、张家口市、承德市、沧州市、廊坊市、衡水市、辛集市、定州市、雄安新区、省本级)9、江苏省(苏州市)共31个地区(统筹区)已开通个人账户跨省共济使用。

海南琼海社保卡怎么激活?有三种激活方法社保卡激活第1种方式如下:银行营业网点激活参保人需持本人社保卡、身份证明原件到对应银行营业网点激活社保卡,激活后医疗保险账户将恢复正常。

社保卡激活第2种方式如下:社保定点医院激活参保人员在定点医疗机构首次使用社保卡时,只需正常办理门诊或住院挂号登记业务,即可直接启用社保功能。

社保卡激活第3种方式如下:请注意,参保人在领取到社保卡需要在半年内办理激活,否则原医疗保险卡将限制使用。

激活社保卡的具体方法可能因地区和银行而有所不同,如有疑问,请咨询当地社保局或相关银行。

社保卡激活第4种方式如下:社保定点药店激活参保人员在医保定点药店首次使用社保卡时,插入原医保卡,再按要求插入社保卡后,即可启用社保卡。

加入收藏
               

使用Castor工具完成Java对象与XML之间的相互转换

点击下载文档

格式为doc格式

  • 账号登录
社交账号登录