`
headsen
  • 浏览: 20986 次
  • 性别: Icon_minigender_1
  • 来自: 江苏
社区版块
存档分类
最新评论

XStream使用笔记

阅读更多

 

官网:http://xstream.codehaus.org/

官网上有很详细且简单易学的教程和实例。

 

作者:Headsen

日期:2013-11-2

 

简单高效的XML和JavaBean转换工具。最核心的两个方法。

   XStream xStream = new XStream();
   String xmlStr = xStream.toXml(obj);
   Object obj = xStream.fromXml(obj);

 

1、对于一个类的空对象(所有属性不赋值),返回一个根节点的报文。属性为Null的属性不会生成节点。属性非null的空值(如空字符串、空数组)会生成空白节点。

 

2、如果不设置类的别名,报文的根节点为【包名+类名】,显的臃肿,如:“xxx.package.ClassName”。

 

3、所有的注解,都有对应的java方法。注解的好处就是简单,但是耦合。两种方式各有各的好处。使用注解时,要调用下面方法激活。

xStream.processAnnotations(Person.class);

 

4、如果要处理的对象,多个属性引用统一对象,那么生成的XML很多节点数据会相同。XStream默认使用reference来精简XML的大小。如:

	List order = new ArrayList();
	order.add(bj);
	order.add(bj);
	order.add(order);
	结果:
	<list>
	  <CD>
	    <id>Next Road Cross</id>
	  </CD>
	  <CD reference="../CD"/>
	  <list reference=".."/>
	</list>

       可以通过setModel设置引用模式。但是,在上述例子中,由于Order引用自己,不过不设置引用解析,则会抛出循环依赖错误。

 

5、对于没有父(根)节点的XML报文,可以使用隐式集合。如:

xStream.addImplicitCollection(Person.class, "friends");

 

6、默认情况下,XStream会生成干净的XML。有时候为了生成配置文件,或可读性更好的XML,需要使用节点属性。

xStream.useAttributeFor(Person.class, "firstname");
<person firstname="Headsen"></person>

 

7、一些结构对象,想作为节点转换时,需要实现对应的Convertor。如:

/*
 * 联系方式类的转换器
 */
public class PhoneNumberConvertor implements SingleValueConverter {
    public boolean canConvert(Class type) {
        return type.equals(PhoneNumber.class);
    }
    public Object fromString(String number) {
        return new PhoneNumber(0, number);
    }
    public String toString(Object phone) {
        return ((PhoneNumber) phone).getCode() + "-" + ((PhoneNumber) phone).getNumber();
    }
}
xstream.registerConverter(new PhoneNumberConvertor());

结果:
<person lastname="Zhang" fax="111-412-4444">
</person>

 

8、有时候,不想某些属性生成在XML中,可使用以下方法:

xStream.omitField(Person.class, "firstname");

 

9、XStream还支持转换为JSON格式,只需注入合适的解析驱动即可。但是XStream并不建议这样做。JSON格式有很大的局限性,特别是表示一些稍微复杂的数据类型。

XStream xstream = new XStream(new JettisonMappedXmlDriver());

XStream很简单,简单的记一下。代码都没贴上来。这里有个不错的。

http://www.cnblogs.com/hoojo/archive/2011/04/22/2025197.html

 

分享到:
评论

相关推荐

    《xStream完美转换XML、JSON》学习笔记

    这篇学习笔记将深入探讨xStream的使用方法和特性,帮助你更好地理解和应用这个工具。 首先,xStream的核心概念是通过类型转换器(Converter)来实现Java对象到XML/JSON的映射。它提供了一种直观的方式来定义对象...

    XStream笔计rar.rar

    《XStream笔记——深入解析与应用》 XStream是一款强大的Java库,用于将对象序列化为XML,反之亦然。它的主要优点在于简洁的API和易于理解的转换过程,使得XML与Java对象之间的绑定变得非常直观。在本篇笔记中,...

    CXF笔记

    【CXF笔记】是关于Apache CXF框架的深入学习记录,该笔记可能涵盖了CXF的基本概念、使用方法、源码解析以及与开发工具的结合应用。Apache CXF是一个开源服务框架,它允许开发者构建和部署多种Web服务。通过CXF,我们...

    JBoss ESB 学习笔记

    - **实现**:使用XML解析技术,如XStream等工具将XML数据转换为Java对象。 #### 十六、第十五个ESB应用Web Service Consumer 1 - **重点**:作为Web服务消费者,调用远程Web服务。 - **实现**:配置Web服务客户端...

    CSS样式 JS特效 Java小工具 文学文档 Java插件 截图软件

    “文学文档”可能指的是使用Markdown或其他格式编写的文档,这些文档通常用于技术写作、笔记或者书籍撰写,它们可以轻松地转换为HTML、PDF或者其他格式。 “Java插件”是指在Java环境中运行的扩展模块,它们提供...

    jqualityvis:使用已验证的指标可视化代码质量

    JQualityVis JQualityVis是用Java编写的软件质量分析框架,允许工程师在将静态软件指标的结果应用于已解析的源代码后,将其可视化。 哦,有光泽 看一下这个,或。 建立笔记 以下库必须在您的类...xstream-1.3.1.jar

    bookman:简单的JavaFX图书管理器

    #Bookman 只是一个小玩具应用程序,...App使用根文件夹中的books.xml作为数据文件。 如果不存在,将创建它。 样本文件为books_sample.xml 去做 详细视图上的文字换行 切换到JAXB摆脱XStream依赖关系 添加排序和过滤

Global site tag (gtag.js) - Google Analytics