【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、对象转化为xmlpackage 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);

}

}

107d41752b250c0c9e4faf73fadf03c0.png

大家应该可以看懂,这个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'?>"

+ "zhangsan12男程序员";

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());

}

}

bbbc63593c97a27bb62e5dae698449b5.png

这样,如果你需要新增字段信息,那么完全就可以创建一个Vo作为新增字段的实体对象,通过以上方法将Vo对象转为xml字符串存储到Bo的大字段中去,需要的时候通过Bo.getXXX获取到这个xml字符串,然后转化为Vo对象,通过get,set方法,在页面上Vo.XX就可以取到值!

以上代码都是经本人测试之后拷贝出来直接可以使用!

有问题,请举手!

微信公众号:IT_Online

职场动态,技术咨询,招聘信息,请拿出手机扫这里!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐