java 对象转 soap,怎么将java对象转换成xml

如何将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的转换!

icon_biggrin.gif

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进来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值