【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就可以取到值!
转载于:https://blog.51cto.com/1936625305/1426165