【web开发】☆★之Obj与Xml之间互相转换
在有些项目的维护过程中,客户需要对某些数据库表进行添加字段,如果你老老实实的不断增加数据库字段,那么维护起来非常困难,同时也大大增加自己的工作量。因此,我采取的是将,新增字段转化成一个xml字符串,将这个xml存储到表中某一个字段中,同时,需要字段的时候解析这个xml字符串就行了,这样完全解决我们的问题,同时大大提高代码的可维护性!实例代码如下!
1、模拟一个实体类
package csg.entity; /** * * @author 小夜的传说 * @2014年6月13日 * 模拟实体 */ public class User { private String name;//姓名 private Integer age;//年龄 private String sex;//性别 private String profes;//职业 public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getProfes() { return profes; } public void setProfes(String profes) { this.profes = profes; } public User(String name, Integer age, String sex, String profes) { super(); this.name = name; this.age = age; this.sex = sex; this.profes = profes; } public User() { super(); } }
2、新建一个转换类
package csg.xml; import com.thoughtworks.xstream.XStream; /** * * @author 小夜的传说 * @2014年6月13日 * 新建转换类 */ public class MyXStream extends XStream{ @Override public String toXML(Object obj) { String dtd = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; return dtd + super.toXML(obj); } @Override public Object fromXML(String xml) { return super.fromXML(xml); } }
3、对象转化为xml
package csg.main; import csg.entity.User; import csg.xml.MyXStream; /** * * @author 小夜的传说 * @2014年6月13日 * 对象转化为xml字符串 */ public class ObjToXml { public static void main(String[] args) { User user=new User(); user.setAge(12); user.setName("zhangsan"); user.setProfes("程序员"); user.setSex("男"); MyXStream xstream = new MyXStream(); xstream.alias("user", User.class);//注意你生成的user,那么解析也要以user解析 String queryXml = xstream.toXML(user); System.out.println(queryXml); } }
大家应该可以看懂,这个xml是String类型,那么你完全就可以将这个xml直接存储到某一个字段中,例如mysql的text类型字段,oracle的clob字段类型。
4、解析xml到对象
package csg.main; import csg.entity.User; import csg.xml.MyXStream; /** * * @author 小夜的传说 * @2014年6月13日 * xml解析为对象 */ public class XmlToObj { public static void main(String[] args) { String str = "<?xml version='1.0' encoding='UTF-8'?>" + "<user><name>zhangsan</name><age>12</age><sex>男</sex><profes>程序员</profes></user>"; MyXStream xstream = new MyXStream(); xstream.alias("user", User.class); User user = (User) xstream.fromXML(str); System.out.println(user.getName()+"--"+user.getAge()+"--"+user.getSex()+"--"+user.getProfes()); } }
这样,如果你需要新增字段信息,那么完全就可以创建一个Vo作为新增字段的实体对象,通过以上方法将Vo对象转为xml字符串存储到Bo的大字段中去,需要的时候通过Bo.getXXX获取到这个xml字符串,然后转化为Vo对象,通过get,set方法,在页面上Vo.XX就可以取到值!
以上代码都是经本人测试之后拷贝出来直接可以使用!
有问题,请举手!
微信公众号:IT_Online
职场动态,技术咨询,招聘信息,请拿出手机扫这里!