如何将java对象转换成xml
废话不多说:
至于有没有其他的方式 我不知道 这个是我的解决方案 如果有的话 请留言
1.需要导入json-plugin google的那个
2.需要json的一个包 这个包具体是什么版本 我也不知道 我会这个包的所有源码上传 不多 就十来个类
import java.io.IOException;
import java.io.PrintWriter;
import org.apache.struts2.ServletActionContext;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.XML;
import com.googlecode.jsonplugin.JSONExeption;
import com.googlecode.jsonplugin.JSONUtil;
/**
* @author heng
* @version 1.0
* class discription:
*/
public class BaseAction {
String returnType="json";
public String getReturnType() {
return returnType;
}
public void setReturnType(String returnType) {
this.returnType = returnType;
}
/**
* 此为Ajax返回值序列化方法 此方法默认返回json格式数据
* 若客户端可通过设置returnType=xml 或者returnType=json来获取返回值 返回值均为utf-8编码
*
*/
public void outPrintJson(Object object) throws JSONException,IOException{
String returnStr = "";
try {
if("json".equals(returnType)){
returnStr=new JSONObject(JSONUtil.serialize(object)).toString(4);
System.out.println(returnStr);
}if("xml".equals(returnType)){
returnStr="<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+XML.toString(new JSONObject(JSONUtil.serialize(object)))+"";
//returnStr=(XML.toJSONObject(returnStr)).toString(4);
System.out.println(returnStr);
}
ServletActionContext.getResponse().setCharacterEncoding("UTF-8");
ServletActionContext.getResponse().setHeader("Cache-Control","no-cache");
PrintWriter out = ServletActionContext.getResponse().getWriter();
out.print(returnStr);
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
throw e;
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw e;
} catch (JSONExeption e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这个是我的baseaction 客户端调用action的时候只需要将设定returnType 的类型 那么outPrintJson 就会将action序列话为xml串或者序列化为json串
下面大体讲解一下代码:
1.返回json
returnStr=new JSONObject(JSONUtil.serialize(object)).toString(4);
JSONUtil.serialize(object) 是json-plugin的序列话json方法 可以无限调用javaobject里面属性的get方法 将object彻底序列成json 不过碰到序列化http路径之类的值的时候会有问题 所以如果返回值里面有url路径之类 那么就在用JSONObject 再次序列 这样就没问题了 原样输出
2.返回xml
returnStr="<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+XML.toString(new JSONObject(JSONUtil.serialize(object)))+"";
由于我下载到的这个包不能彻底序列对象内部的对象属性 所以还是用google提供的json包将对象彻底序列成json对象 然后用次字符串再构造JSONObject对象 最后再用xml的toString方法序列 其xml也可原样输出url路径
google提供的是jar包 我下载到的是rar包
望大家拍板
1 楼
kevinguo007
2010-01-11
使用XStream也可以实现Java 对象和XML的转换!
2 楼
hfkiss44
2010-01-11
搜了一下 XStream有人06年就在javaeye发帖了 呵呵 谢谢kevinguo007
3 楼
qingling600
2012-08-08
谢谢了,你说的方法还在实践中。
4 楼
qingling600
2012-08-08
兄弟啊,JSONExeption类,jsonplugin-0.7.jar 这个包的吗? 我怎么到不进去啊,
} catch (com.googlecode.jsonplugin.JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
只有这样写才行的。 不都import进来。