`
21jhf
  • 浏览: 130331 次
  • 来自: ...
社区版块
存档分类
最新评论

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

 
阅读更多

近来遇到的编程过程中需要对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格式字符串.

 

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

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

分享到:
评论
1 楼 lizhenlzlz 2018-01-06  
private static XStream xstream;

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

}
对我有用

相关推荐

    好用的xStream XML和JAVA对象互相转换的简单示例

    XStream是一个轻量级、高性能的库,能够将Java对象序列化为XML,同时也能将XML反序列化回Java对象,实现XML和Java对象的互相转换。 首先,我们需要引入XStream库。在给定的描述中提到了两个依赖文件:xstream-1.3.1...

    xStream转换xml和json源码

    本篇文章将深入探讨xStream如何实现Java对象与XML和JSON的相互转换,并提供详细的代码示例。 ### 1. xStream的安装与引入 首先,你需要在项目中添加xStream的依赖。如果你使用的是Maven,可以在pom.xml文件中添加...

    Xstream_java对象和xml的互相转换

    在使用 XStream 进行序列化时,我们首先需要创建一个 `XStream` 实例,然后调用 `toXML()` 方法,传入要转换的 Java 对象。这将返回一个表示该对象的 XML 字符串。例如: ```java XStream xstream = new XStream();...

    xstream 让javabean和xml互相转换

    这篇博客“xstream 让javabean和xml互相转换”深入探讨了如何利用XStream库实现这一功能。 XStream的核心思想是通过反射机制,将Java对象的字段映射到XML的元素和属性,以及反向操作将XML解析回Java对象。它的优势...

    使用XStream是实现XML与Java对象的转换(4)--转换器

    XStream是一个强大的库,专门用于XML与Java对象之间的互相转换。这篇博文将深入探讨如何利用XStream的转换器功能来优化这一过程。 XStream的核心原理是通过反射机制自动将Java对象映射到XML结构,并反之亦然。然而...

    XStream:Object与Xml字符串 互相转换

    总的来说,XStream是一个功能丰富的库,它使得Java对象与XML之间的转换变得简单易行。通过理解和掌握XStream的用法,开发者可以更高效地处理数据序列化需求,无论是在存储、传输还是解析XML文档的场景下。

    使用XStream是实现XML与Java对象的转换(5)--Object Stream

    标题中的“使用XStream是实现XML与Java对象的转换(5)--Object Stream”指的是一个关于XStream库在Java中如何将XML数据与Java对象进行互相转换的教程系列的第五部分,重点可能是关于“Object Stream”的内容。XStream...

    xstream实现xml和java bean 互相转换

    它可以将Java对象转换为XML文档,也可以将XML文档转换为Java对象。 pom引用 &lt;groupId&gt;com.thoughtworks.xstream&lt;/groupId&gt; &lt;artifactId&gt;xstream &lt;version&gt;1.4.20 实体类和测试类详见博客 ...

    xStream学习xml,JASON,JAVA对象转换

    XStream库则是Java世界中一个强大的工具,它能够方便地实现XML和JSON与Java对象之间的互相转换。这篇博客文章,标题为“xStream学习xml,JASON,JAVA对象转换”,显然会探讨如何利用XStream来处理这两种数据格式。 ...

    java对象与xml的互相转换

    Java对象与XML之间的转换是Java开发中常见的需求,特别是在数据交换、配置文件存储或Web服务交互等场景。本文将深入探讨如何实现Java对象到XML以及XML到Java对象的转换。 首先,Java对象到XML的转换通常涉及到Java...

    xml操作之xstream

    在Java开发中,将XML与对象互相转换是常见的需求,这时就需要用到像XStream这样的库。 XStream是一个开源的Java库,它提供了一种简单的方式来序列化和反序列化Java对象到XML,反之亦然。它的主要优点在于其易用性和...

    XML、JAVA、JSON多种方式互相转换

    - 使用Apache的JAXB(Java Architecture for XML Binding):JAXB允许将XML绑定到Java对象,然后再将这些对象转换为JSON。 2. JSON到XML转换: - Jackson库同样提供了反向转换功能,使用`writeValueAsString`方法...

    xml与javabean的相互转换

    3. 第三方库:除了标准的Java库,还有许多第三方库如Apache's Digester、Castor和XStream等,它们提供了更简洁的API来简化XML与JavaBean之间的转换。 4. XMLBeans库:压缩包中的"xmlbean"可能指的是Apache的...

    android xUtils断点下载+xml与javaBean互转+打开本地音乐播放器

    这篇内容将主要介绍如何利用xUtils进行断点下载、XStream库实现XML与JavaBean之间的互相转换,以及如何启动本地音乐播放器。这些技术都是Android应用开发中常见的需求,对提升用户体验和应用功能具有积极的作用。 ...

    SSH2 整合简单增删改查实例,仅供学习使用

    4. **Gson**:Gson是Google提供的一个Java库,用于在Java对象和JSON数据之间进行互相转换。在这个例子中,Gson可能被用到了后台数据与前端Ajax交互的过程中,将Java对象转换成JSON字符串,通过Ajax发送到客户端,...

    jeesite技术分析ppt资料

    - JaxbMapper: XML与Object之间的互相转换。 - JsonMapper: JSON与Object之间的互相转换。 - Cryptos、Digests: 密钥工具类(SHA1、MD5)。 - Collections3: 集合对象工具类。 - Encodes: 各种编码转换工具类。 ...

Global site tag (gtag.js) - Google Analytics