XStream学习笔记
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学习笔记的更多相关文章
- Dubbo -- 系统学习 笔记 -- 依赖
Dubbo -- 系统学习 笔记 -- 目录 依赖 必需依赖 缺省依赖 可选依赖 依赖 必需依赖 JDK1.5+ 理论上Dubbo可以只依赖JDK,不依赖于任何三方库运行,只需配置使用JDK相关实现策 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
随机推荐
- 通过RGB灯输出七色
本文由博主原创,如有不对之处请指明,转载请说明出处. /********************************* 代码功能:输出模拟信号,控制RGB灯的颜色 使用函数: pinMode(引脚 ...
- Libcurl多线程crash问题(cento)
cento :http://blog.csdn.net/delphiwcdj/article/details/18284429 1 问题背景 后台系统有一个单线程的http接口,为了提高并发处理能力, ...
- 关于Intent的七大重要属性
在Android 中,Intent用来封装两个Activity之间的调用意图,实现两个Activity之间的跳转,并传递信息. Intent的七大重要属性:ComponentName Action ...
- Oracle 左连接、右连接、全外连接、(+)号作用
分类: Oracle Oracle 外连接 (1)左外连接 (左边的表不加限制) (2)右外连接(右边的表不加限制) (3)全外连接(左右两表都不加限制) 外连接(Outer ...
- ArcEngine编辑保存错误:Unable to create logfile system tables
通过ArcEngine对多个SDE中多个图层进行批量编辑处理,其中有部分图层在结束编辑的时候出现错误提示(部分图层可以,只有两个数据较多的图层保存失败). 错误信息:Unable to create ...
- MVC5+EF6 简易版CMS(非接口) 第四章:使用业务层方法,以及关联表解决方案
目录 简易版CMS后台管理系统开发流程 MVC5+EF6 简易版CMS(非接口) 第一章:新建项目 MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型 MVC5+EF6 简易版CMS(非接口 ...
- C++中数据对齐
大体看了看数据对齐,不知道是否正确,总结如下: struct A { char name; double dHeight; int age; }; sizeof(A) = (1+7+8+4+4) = ...
- 协程,事件驱动,异步io模型,异步网络框架
协程是一种用户态的轻量级线程,内核不知道它的存在.协程运行于一个线程中,协程的切换是由用户控制的.线程的切换是由cpu来控制的,而协程的切换是由用户控制的.协程的执行时串行的. select/poll ...
- C# 反转字符串
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 实现字符 ...
- VMware Linux Guest 增加磁盘无需重启的方法
摘要 常常需要需要给VMware Linux Guest增加磁盘适配一些测试场景,而又不想花费时间重启Guest,查找文档,发现一种简单的方法,记录一下操作步骤. 操作步骤 1 编辑Linux ...