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