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
====================================================================================================

最新文章

  1. TouchDevelop [Mobile App]
  2. svn bug
  3. Android动态方式破解apk前奏篇(Eclipse动态调试smail源码)
  4. mvc 中关于资源文件的扩展
  5. Java入门记(二):向上转型与向下转型
  6. Javascript 基础知识学习--javascript中的参数传递都是按值传递的
  7. 用户管理 之 Linux 用户(User)查询篇
  8. 数据库mysql的基本命令
  9. php远程图片抓取存放到本地路径并生成缩略图
  10. python 下的数据结构与算法---7:查找
  11. CheckBoxPreference组件
  12. 部署DNS服务
  13. ●SPOJ 8222 NSUBSTR–Substrings
  14. 雷林鹏分享:使用 XSLT 显示 XML
  15. C#DateTime好用但不常用的用法
  16. asp.net管线
  17. IO流常规操作
  18. 支付宝 iOS SDK 官方下载页面[转]
  19. SQL Serever学习4
  20. mysql按照天或小时group分组统计

热门文章

  1. 调用别人提供的WebService
  2. MVC结构
  3. 08JAVA多态
  4. python学习之——selenium元素定位
  5. Firefox每次刷新时自动清空缓存的设置方法
  6. HTML可编辑的select
  7. Python中获取异常(Exception)信息
  8. 新手看Mockplus
  9. 引入Ember插件 大概流程
  10. PMI列子1