XStream

依赖:

	

    com.thoughtworks.xstream
    xstream
    1.4.10

最近有个需求,要用特定格式的xml格式的数据进行数据更新,这样,用XStream来把你的实体做成你要的xml格式,先开一个小菜:
参考xml格式:

 
    		
		 	内容
	      
      
  
首先我们可以分析一下,value标签内的数据都是我们所需要更新的内容,我们可以用一个简单的bean去创建它:

1.创建实体:
从xml中我们取得关键信息:id,name,type,value,这四项作为我们关键的bean信息 创建:Description.java 文件:

@Data
    public class Description {
    
        private String value;
    
        private String id;
    
        private String name;
    
        private String type;
    }

2.解析输出:
2.1 这里有个field标签,和我们的bean没有:
xStream.alias(“filed",Description.class);
用上面的方法就可以了,当你是Description类的时候,会自然的当作field标签和看待
2.2 name,type等里面是有信息的呀,如何到这个field标签里面去呢?
Stream.useAttributeFor(Description.class,“name”);
从方法的名字可以看出,用 属性 对于 拆看一看,经验的coder马上就知道有戏了,说明name是这个field的属性,自然会在field的标签里面
2.3 toXML
xStream.toXML(description);
3.小demo:

public static void main(String[] args) {
        Description description = new Description();
        description.setValue("url");
        description.setName("商品描述");
        description.setType("input");
        description.setId("description");

        XStream xStream = new XStream();
        xStream.alias("filed",Description.class);
        xStream.useAttributeFor(Description.class,"name");
        xStream.useAttributeFor(Description.class,"type");
        xStream.useAttributeFor(Description.class,"id");

        String out = xStream.toXML(description);
        System.out.println(out);
        }

结果当然是和上述一致了

分割线:
如果需求都是这么简单的xml那不是很舒服?呵呵!而且xml里面命名可不是和Java一样的,比如complex-values,不是下划线,这种的如何处理呢?
xStream2.aliasField(“complex-values”,class.class,“complexValues”);
complexValues是你bean的属性名,complex-values是你要做成标签的名称
以上,基本都可以通过注解实现。

你可能感兴趣的:(java)