• XStream


    1. XStream 作用

    • 可以把 JavaBean 转换为(序列化) xml;

    2. XStream 相关 jar 包

    • 核心 jar 包: xstream-1.4.7;
    • 必须依赖包: xpp3_min-1.1.4c (XML Pull Parser, 一款速度很快的 XML 解析器);

    3. 使用步骤:

    • XStream xstream = new XStream();
    • String xmlStr = xstream.toXML(javaBean);
    // City.java
        public class City{
            private String name;
            private String description;
            ...
        }
    
    // Province.java
        public class Province {
            private String name;
            private List<City> cities = new ArrayList<City>();
    
            public addCity(City city){
                cities.add(city);
            }
        }
    
    // XStream 使用
    public class Demo{
    
        public List<Province> getProvince(){
            Province p1 = new Province("辽宁省");
            p1.addCity(new City("沈阳","shenyang"));
            p1.addCity(new City("大连","dalian"));
    
            Province p2 = new Province("吉林省");
            p2.addCity(new City("长春","changchun"));
            p2.addCity(new City("四平","siping"));
    
            List<Province> provinceList = new ArrayList<Province>();
            provinceList.add(p1);
            provinceList.add(p2);
    
            return provinceList;
        }
    
        public void fun(){
            List<Province> proList = getProvince();
    
            XStream xstream = new XStream();
            String s = xstream.toXML(proList);
        }
    }
    
    // 输出结果
        <list>
        <cn.itcast.xstream.Province>
        <name>辽宁省</name>
        <cities>
          <cn.itcast.xstream.City>
            <name>沈阳</name>
            <description>shenyang</description>
          </cn.itcast.xstream.City>
          <cn.itcast.xstream.City>
            <name>大连</name>
            <description>dalian</description>
          </cn.itcast.xstream.City>
        </cities>
        </cn.itcast.xstream.Province>
        <cn.itcast.xstream.Province>
        <name>吉林省</name>
        <cities>
          <cn.itcast.xstream.City>
            <name>长春</name>
            <description>changchun</description>
          </cn.itcast.xstream.City>
          <cn.itcast.xstream.City>
            <name>四平</name>
            <description>siping</description>
          </cn.itcast.xstream.City>
        </cities>
        </cn.itcast.xstream.Province>
        </list>
    
    // 更改别名
        /*
         * 默认 List 类型对应 <list> 元素, 希望让 List 类型对应 <china>
         * 默认 province 类型对应 <cn.itcast.xstream.Province>, 希望让它对应 <province>
         * 默认 City 类型对应 <cn.itcast.xstream.City>, 希望让它对应 <city> 元素
         *
         * 默认 JavaBean 的属性都会生成子元素! 希望让类的成员生成元素的属性
         *
         * 去除集合(Collection)类型的成员, 只保留 Collection 的内容
         */
    
         public void fun2(){
            List<Province> proList = getProvince();
            XStream xstream = new XStream();
    
            // 给指定的类型指定别名
            // 让 List 类型生成的元素名为 china
            xstream.alias("china",List.class);
            // 让 Province 类型生成的元素名为 province
            xstream.alias("province",Province.class);
            // 让 City 类型生成的元素名为 city
            xstream.alias("city",City.class);
    
            // 把 Province 类型的 name 属性, 生成 <province> 元素的属性
            xstream.useAttributeFor(Province.class,"name");
    
            // 让 Province 类的名为 cities 的成员不生成元素
            // cities 是 List 类型, 也会生成元素
            xstream.addImplicitCollection(Province.class,"cities");
    
            // 让 city 类中名为 description 属性不生成对应的 xml 元素
            xstream.omitField(City.class,"description");
         }
    
    //  输出结果:
        <china>
          <province name="辽宁省">
            <city>
              <name>沈阳</name>
            </city>
            <city>
              <name>大连</name>
            </city>
          </province>
          <province name="吉林省">
            <city>
              <name>长春</name>
            </city>
            <city>
              <name>四平</name>
            </city>
          </province>
        </china>
    

    参考资料:

  • 相关阅读:
    选项卡
    使用script创建标签添加属性值和添加样式
    判断表单不能为空(表格形式的)
    数组
    关于meta元信息元素
    js判断数据类型
    Ising模型的Metropolis模拟中的组态阻塞和振荡
    python 画能级图
    python 调用 shell 命令,制作用户界面
    打包 python 程序,变成一个可执行文件
  • 原文地址:https://www.cnblogs.com/linkworld/p/7639130.html
Copyright © 2020-2023  润新知