使用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"?> 下一篇:
河南许昌社保卡可以当银行卡使用吗
接下来随新社通app小编一起了解具体详情吧。
一、河南许昌社保养老金的计算公式是什么?河南许昌职工社保卡交满15年拿多少?根据河南许昌退休养老金计算公式,人们的养老金肯定包括基础养老金和个人账户养老金两部分,部分参保时间较早、工作时间较长的职工会有过渡性养老金这一待遇。
河南许昌基础养老金计算公式=河南许昌最新的养老金计发基数(1+本人平均缴费指数)÷2缴费年限1%。
河南许昌个人账户养老金计算公式=退休时养老保险个人账户的余额÷退休年龄确定的计发月数。
河南许昌过渡性养老金计算公式,是每一个省份都不一样,是根据当地省份的情况来制定的。
影响河南许昌养老金高低的五大因素。
根据上面所说的养老金计算公式情况,影响养老金高低的五大因素主要是退休地所在的养老金计发基数、缴费年限、本人的平均缴费指数、养老保险个人账户余额、退休年龄确定的计发月数。
由于过渡性养老金并不是所有人都有,所以就不单独说了。
①退休地所在的养老金计发基数,各地说实话相差还是比较大的。
②缴费年限,是包括实际缴费年限和视同缴费年限,这是计算养老金的一项极其重要因素。
其他因素都相同的情况下,养老金是跟缴费年限成正比的。
比如说缴费15年可以领取1500元的情况下,缴费30年可以领取3000元,缴费40年可以领取4000元。
③本人的平均缴费指数,主要是根据缴费基数和计算平均缴费指数使用的社平工资来计算的。
类似于缴费档次,一般在0.6~3之间。
平均缴费指数越高,计算出来的基础养老金就越高。
但是,不要指望最后一两年按照高基数缴费,可以领取高养老金。
平均缴费指数计算,是所有实际缴费年限平均的。
④养老保险个人账户的余额,这主要是看前期的积累了。
不过由于缴费基数上下限的影响,过去我们缴费基数较低,因此个人账户积累也不多。
近年来由于缴费基数提高,个人账户记账利率的提升,因此个人账户的余额才在快速积累。
⑤退休年龄确定的计发月数,这实际上是一种晚退多得的体现。
50岁的计发月数是195个月,55岁是170个月,60岁是139个月。
退休越晚,计划越数越小,相同个人账户余额情况下的个人账户养老金就越高。
各地公布的具体方案不同,个人情况也不同,具体需以个人情况及当地有关部门法规为准。
二、河南许昌职工社保卡每年需要缴纳多少?最新如下 社保卡每年交多少?以秦某职工社保为例: 由上图得知,秦某社保卡一年需要缴纳4423.64元,职工个人月缴纳368.64元,若您想要了解明细点击新社通社保计算器,来了解一下明细吧。
》点击新社通app社保计算器,轻松了解你的社保缴费明细!提示:新社通社保计算器计算所得,数据仅供参考。
每个城市每年设定的最低缴纳基数(即劳动者月收入)各有差异,但总体上遵循着相似的原则,即按比例进行缴纳。
龙鱼身上有红点回事:患上出血病?使用敌菌灵医治
不过在饲养龙鱼的过程中,可能会遇到龙鱼身上出现红色斑点的情况,这原因是什么呢?一起来了解一下吧。
龙鱼身上有红点如何回事如果龙鱼身上出现了红点,可能是因为龙鱼患上了出血病。
有很多真相会导致龙鱼患上出血病,例如水温太低、水质太差、细菌感染等。
因为龙鱼喜欢生活在温暖的环境里,对水温有着比较高的要求,所以如果饲养龙鱼时长期让龙鱼处于低温的环境当中,龙鱼身体表面就会受到刺激,从而导致有许多红点出现在体表的情况。
此外,龙鱼对水质也有着比较高的要求,如果龙鱼生活的水质有着太多的杂质和脏东西,龙鱼同样会受到刺激,容易患上出血病,从而在身上出现红点。
如果饲养者长时间不给龙鱼换水的话,水质就会逐渐恶化,会有大量的细菌在水里生殖生长,细菌在进入龙鱼身体之后,就会在体表出现充血的情况,身上也就会有很多红点。
龙鱼身上有红点如何医治如果龙鱼身上出现了红点,可能是因为出血病导致的。
这种情况需要饲养者把鱼缸里水的温度提高到26摄氏度以上,同时保持水温的恒定,这样子不会对龙鱼产生刺激。
之后可以将龙鱼转到阳光充足的地方,能够通过光线照射帮助龙鱼杀菌消毒,加快龙鱼痊愈的速度。
如果龙鱼患上出血病的情况比较严重,饲养者还需要将龙鱼捞出来单独医治,可以使用3-5ppm的敌菌灵对患病的龙鱼进行药浴,每次药浴10-15分钟,每天药浴一次,持续一周左右即可痊愈。
感兴趣的朋友还可以了解一下龙鱼嘴巴烂了如何治。