XStream 学习和使用

1、XStream 简介

一个 XML 的序列化工具,可以实现 Java 对象序列化成 XML,或者将 XML 反序列为 Java 对象。

2、Maven 依赖

    <dependency>
        <groupId>com.thoughtworks.xstream</groupId>
        <artifactId>xstream</artifactId>
        <version>1.4.19</version>
    </dependency>

3、XStream 的常用注解

注解 说明 作用目标
@XStreamAlias 别名,作为xml标签名 对象、字段
@XStreamAsAttribute 转为标签的属性 字段
@XStreamOmitField 将对象转为xml时,忽略该字段 字段
@XstreamImplicit 隐式集合 集合字段
@XstreamConverter(ToAttributeValueConverter.class) 注入转换器, 所有字段设成标签属性 对象

Eg,

<module id="0" name="name1" order="1">
  <item id="1" name=""/>  
  <item id="2" name=""/>  
  <item id="3" name=""/> 
</module>

demo:

@XStreamAlias("module") // 别名,作为xml标签名字
public class ModuleVo {

  @XStreamAsAttribute // 字段成为标签内属性
  @XStreamAlas("id")
  private String moduleid; 

  @XStreamAsAttribute
  private String name;

  @XStreamAsAttribute
  private String order;

  @XStreamImplicit(itemFieldName = "item") // 集合,ItemRegVo类似于ModuleVo这种,里面可以定义自己的属性
  private List<ItemRegVo> itemRegVoList;

}
public void static main(String[] args){
    DomDriver driver = new DomDriver();
    XStream xStream = new XStream(driver);
    xStream.autodetectAnnotations(true);

    Class<?>[] classArray = getClassArray(packagePath);
    XStream xstream = createXstream(); 
    XStreamxstream.processAnnotations(classArray)
    xstream.allowTypes(cassArray);
    Object obj = xstream.fromXML(outputStream); // xml转JavaBean
    xstream.toXML(o, filePath); // JavaBean转XML
}


/**
 * 扫描指定包下的所有类,返回class数组
 */
private static Class<?>[] getClassArray(String packagePaths) {
    Set<Class<?>>totalSet = new HashSet<>();
    Set<String> paths = new HashSet<>();
    paths.add(packagePaths);
    for (String packagePath : paths) {
        totalSet.addAll(CTassScanner.scanPackage(packagePath));
     }
    return totalSet.toArray(new Class[o])
}
posted @ 2023-07-06 15:22  little_lunatic  阅读(410)  评论(0)    收藏  举报