当前位置:首页 > 开发 > 编程语言 > XML > 正文

使用XStream进行XML与对象的互相转换

发表于: 2012-05-13   作者:21jhf   来源:转载   浏览:
摘要: 近来遇到的编程过程中需要对XML进行大量的处理,java是面向对象的,所以要把XML的处理转化为面向对象的处理.下面记录下我用XStream进行XML与对象的转换过程. public class XmlUtils { private static XStream xstream;  static {  xstream = new XStream(new

近来遇到的编程过程中需要对XML进行大量的处理,java是面向对象的,所以要把XML的处理转化为面向对象的处理.下面记录下我用XStream进行XML与对象的转换过程.

public class XmlUtils {
 private static XStream xstream;

 static {
  xstream = new XStream(new DomDriver("UTF-8", new XmlFriendlyNameCoder("-_", "_")));

 }

 /**
  * XML to object.
  *
  * @param inputXml
  *            XML string.
  * @param types
  *            annotation classes.
  * @return
  * @throws Exception
  */
 public static Object xml2Object(String inputXml, Class<?>[] types) throws Exception {

  if (null == inputXml || "".equals(inputXml)) {
   return null;
  }
  xstream.processAnnotations(types);
  return xstream.fromXML(inputXml);

 }

 /**
  * object to XML.
  *
  * @param ro
  *            Object.
  * @param types
  *            annotation classes.
  * @return
  * @throws Exception
  */
 public static String object2Xml(Object ro, Class<?>[] types) throws Exception {
  if (null == ro) {
   return null;
  }
  xstream.processAnnotations(types);

  return xstream.toXML(ro);
 }
}
对生成xml中__替换_的最新写法是:xstream = new XStream(new DomDriver("UTF-8", new XmlFriendlyNameCoder("-_", "_")));

网上很多用这种XStream xstream = new XStream(new XppDriver(new XmlFriendlyReplacer("-_", "_")));

帮助文档上明确写明

 /**
     * @since 1.2
     * @deprecated As of 1.4, use {@link #DomDriver(String, NameCoder)} instead.
     */

说明1.4已经废弃了这种做法.

处理过程中都用了annotations来处理对象,下面是其中一个对象的例子

import com.thoughtworks.xstream.annotations.XStreamAlias;

@XStreamAlias("RESULT")
public class ResultObject {
 @XStreamAlias("RTNCODE")
 private String rtncode;

 @XStreamAlias("MESSAGE")
 private String message;

 @XStreamAlias("CONTENT")
 private Content content;
...省略了get, set方法

 

下面是使用XmlUtils 的测试例子

try {
   Class<?>[] types = new Class[] { ResultObject.class, Content.class};
   resultXml = XmlUtils.object2Xml(ro, types);//其中ro是要转换的对象
   System.out.println(resultXml);
  } catch (Exception e) {
   System.out.println(e.getMessage());
   e.printStackTrace();
  }

 

//下面是转换xml成对象的测试代码
   InputObject io = (InputObject) XmlUtils.xml2Object(str, new Class[] { InputObject.class });

 

其中str是xml格式字符串.

 

经过测试,转换效率还挺高.

如有问题,请联系我.谢谢,如转载请注明出处.

使用XStream进行XML与对象的互相转换

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
使用 XStream 把 Java 对象序列化为 XML 使用 XStream 轻松实现对象持久化、配置和数据传输 XML 序
使用 XStream 把 Java 对象序列化为 XML 使用 XStream 轻松实现对象持久化、配置和数据传输 <!--
使用 XStream 把 Java 对象序列化为 XML 使用 XStream 轻松实现对象持久化、配置和数据传输 XML 序
XML 序列化用处很多,包括对象持久化和数据传输。但是一些 XML 序列化技术实现起来可能很复杂。XStr
使用 XStream 不用任何映射就能实现多数 Java 对象的序列化。在生成的 XML 中对象名变成了元素名,
一. 简介 xStream可以很容易实现Java对象和xml文档互相转换, 可以修改某个特定的属性和节点名称,x
XStream是一个能将java 对象与 xml字符串进行互相转换的这么一个java library。 官网地址:http://x
因为是测试,所以是先从SD卡读取一个xml文件,转换成对象,再把这个对象生成xml文件,写入SD卡,(
xStream框架 xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名
我们经常会有需求,比如调用别人的接口,别人会返回给你json或者xml格式的数据,然后我们要转换为相
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号