XStream

所需jar包:
xstream-1.3.jar
xpp3_min-1.1.4c.jar
xmlpull-1.1.3.1.jar

目录:
1.注解去除,标签中带有包名的节点
2.注解修改,标签中的字段名
3.注解去除,XML中的额外标签
4.注解修改,XML中的标签 |同时也可以解决,XML中节点重名问题
5.隐藏集合标签
6.注解忽略字段,在POJO中有的字段不想让他生成xml

=====================================================================================================

1.注解解除,标签中带有包名的节点:
例如:
<com.ultimate.incoming.util.Dome>
<car>BMW</car>
</com.ultimate.incoming.util.Dome>

解决办法:
⑴ 实例化 XStream 时,在其参数中实例化 DomDriver
不使用参数时,会默认使用KXml2 的解析工具

private XStream xStream = new XStream(new DomDriver());

⑵ 在ClassToXml工具类中调用Annotations的静态方法configureAliases
!!! 用到到注解都需要添加此步骤
指派XStream主动去解析annotation,将XStream实例放入configureAliases参数中
topLevelClasses:Dome.class

Annotations.configureAliases(xStream, topLevelClasses)

⑶ 在实体类的类名上添加注解:使其替代</com.ultimate.incoming.util.Dome>

@XStreamAlias("Dome")
public class Dome {}

修改后:
<Dome>
<car>BMW</car>
</Dome>

如果想用注解方式:也可以用 xStream.alians("person",Person.class); 去替换
                                                                         1
=====================================================================================================

2.注解修改,标签中的字段名

例如:Dome中想将car标签修改为bike

<Dome>
<car>BMW</car>
</Dome>

解决办法:
⑴ 保证你的ClassToXml中带有
Annotations.configureAliases(xStream, topLevelClasses)

⑵ 在要更改的实体类的属性上添加 @XStreamAlias("要更改的名字")

@XStreamAlias("bike")
private String car;

修改后:
<Dome>
<bike>BMW</bike>
</Dome>
                                                                         2
=====================================================================================================

3.注解去除,XML中的car标签

例如:
<Dome>
<car>
<string>兰博基尼</string>
<string>保时捷</string>
</car>
</Dome>

解决方法:
⑴ 同第二页中的第一步

⑵ 在要去除的属性上加上@XStreamImplicit

@XStreamImplicit
private List car;

修改后:
<Dome>
<string>兰博基尼</string>
<string>保时捷</string>
</Dome>

                                                                         3
=====================================================================================================

4.注解修改,XML中的string标签 | 同时也可以解决,XML中节点重名问题

例如:
<Dome>
<string>兰博基尼</string>
<string>保时捷</string>
</Dome>

解决方法:
⑴ 同第二页中的第一步

⑵ 在要修改的属性上加上@XStreamImplicit(itemFieldName="想要修改的名称")

@XStreamImplicit(itemFieldName="car")
private List car;

注:到此步骤修改后,如下:会多出来个 class="string"
<Dome>
<car class="string">兰博基尼</car>
<car class="string">保时捷</car>
</Dome>

⑶ 去除class="string",要规定属性List的泛型
@XStreamImplicit(itemFieldName="car")
private List<String> car;

修改后:
<Dome>
<car>兰博基尼</car>
<car>保时捷</car>
</Dome>

                                                                         4
=====================================================================================================

5.隐藏集合标签:直接干掉bike标签

注:只是单独的去掉了集合标签,但对string元素的名字不能修改,
如果想修改名字请从第3页做到第4页

例如:
<Dome>
<bike>
<string>飞鸽</string>
<string>东风</string>
</bike>
</Dome>

⑴ 在ClassToXml中配置 xStream.addImplicitCollection(要修改的类名.class,"要去掉的集合名字");

修改后:
<Dome>
<string>飞鸽</string>
<string>东风</string>
</Dome>

                                                                         5
=====================================================================================================

6.忽略字段,在POJO中有的字段不想让他生成xml

例如:不想让bike这个集合生成xml
<Dome>
<bike>
<string>飞鸽</string>
<string>东风</string>
</bike>
</Dome>

⑴ 在属性上添加 @XStreamOmitField

@XStreamOmitField
private List<String> bike;

修改后:
<Dome/>

                                                                        6
====================================================================================================

XStream学习笔记的更多相关文章

  1. Dubbo -- 系统学习 笔记 -- 依赖

    Dubbo -- 系统学习 笔记 -- 目录 依赖 必需依赖 缺省依赖 可选依赖 依赖 必需依赖 JDK1.5+ 理论上Dubbo可以只依赖JDK,不依赖于任何三方库运行,只需配置使用JDK相关实现策 ...

  2. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  3. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  4. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  5. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  6. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  7. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  8. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

  9. HTML学习笔记

    HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...

随机推荐

  1. char类型输出地址

    问题描述: 当输出char的地址时,发现输出的是一个字符: char ch = 'a'; cout<<&ch<<endl;//a @ 因为cout得到一个char类型的 ...

  2. vs快捷方式

    项目相关的快捷键 Ctrl + Shift + B = 生成项目 Ctrl + Alt + L = 显示Solution Explorer(解决方案资源管理器) Shift + Alt+ C = 添加 ...

  3. 我的 C++ style

    int g_tennis; // not use as possible int make_world() { ; return size; } ; enum Color { RED, GREEN } ...

  4. 2016. last day in office

    外面黑了,水面上黑魆魆的看不清楚了. 明天请假了,2017年再见! 2017加油! 2017 English improving!

  5. @Repository、@Service、@Controller 和 @Component

    转载:http://blog.csdn.net/ye1992/article/details/19971467 spring 自 2.0 版本开始,陆续引入了一些注解用于简化 Spring 的开发.@ ...

  6. JAVA面向对象初步知识总结:封装、继承、多态

    1.封装 把数据和方法包装进类中,以及具体实现的隐藏,常共同被称作是是封装.其结果是一个同时带有特征和行为的数据类型.所谓具体实现的隐藏是通过访问权限控制实现的.JAVA 子类重写继承的方法时,不可以 ...

  7. Nodejs Express下引入本地文件的方法

    Express的结构如下: |---node_modules------用于安装本地模块.     |---public------------用于存放用户可以下载到的文件,比如图片.脚本文件.样式表 ...

  8. sqlite本地保存数据

    package com.cesecsh.ics.database; import android.content.Context; import android.database.Cursor; im ...

  9. C++关于文件的读写(续)

    上次,我们探讨了C++关于文件的读操作,这次继续写操作.写,顾名思义,就是把我们自己的东西放到文件中去. 我们举一个简单的例子,就不在乎它的排版问题了. #include<iostream> ...

  10. nodejs的url参数获取

    express封装了多种http请求方式,我们主要使用get和post两种,即qpp.get和qpp.post.qpp.get和qpp.post的第一个参数都为请求的路径,第二个参数为处理请求的回调函 ...