栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > 其他 > xml语言

xml解析工具包 Xstream的示例代码详解

xml语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

xml解析工具包 Xstream的示例代码详解

特点

    简化的API;

    无映射文件;

    高性能,低内存占用;

    整洁的XML;

    不需要修改对象,支持内部私有字段;

    不需要setter/getter方法,final字段;

    提供序列化接口;

    自定义转换类型策略;

    详细的错误诊断;

Xstream常用注解

@XStreamAlias("message") 别名注解,作用目标:类,字段

@XStreamImplicit 隐式集合

@XStreamImplicit(itemFieldName="part") 作用目标:集合字段

@XStreamConverter(SinglevalueCalendarConverter.class) 注入转换器,作用目标: 对象

@XStreamAsAttribute 转换成属性,作用目标:字段

@XStreamOmitField 忽略字段,作用目标:字段

示例

1. 解析XML工具类

import com.thoughtworks.xstream.XStream;import com.thoughtworks.xstream.io.xml.DomDriver;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.*;public class XmlUtil {    private static final Logger logger = LoggerFactory.            getLogger(XmlUtil.class);        public static String toXml(Object obj) {        //XStream xstream=new XStream(); //默认使用xpp解析器        //指定编码解析器        XStream xstream = new XStream(new DomDriver("utf-8"));        //启用注解识别        xstream.processAnnotations(obj.getClass());        return xstream.toXML(obj);    }        public static  T toBean(String xmlStr, Class cls) {        XStream xstream = new XStream();        xstream.processAnnotations(cls);        T obj = (T) xstream.fromXML(xmlStr);        return obj;    }        public static boolean toXMLFile(Object obj, String absPath, String fileName) {        String strXml = toXml(obj);        String filePath = absPath + fileName;        File file = new File(filePath);        if (!file.exists()) {            try {                file.createNewFile();            } catch (IOException e) {                logger.error("file creation failed, cause is {}", e);                return false;            }        }        OutputStream ous = null;        try {            ous = new FileOutputStream(file);            ous.write(strXml.getBytes());            ous.flush();        } catch (Exception e1) {            logger.error("file write failed, cause is {}", e1);            return false;        } finally {            if (ous != null)                try {                    ous.close();                } catch (IOException e) {                    e.printStackTrace();                }        }        return true;    }        public static  T toBeanFromFile(String absPath, String fileName, Class cls) throws Exception {        String filePath = absPath + fileName;        InputStream ins = null;        try {            ins = new FileInputStream(new File(filePath));        } catch (Exception e) {            throw new Exception("read {" + filePath + "} file failed!", e);        }        XStream xstream = new XStream();        xstream.processAnnotations(cls);        T obj = null;        try {            obj = (T) xstream.fromXML(ins);        } catch (Exception e) {            throw new Exception("parse {" + filePath + "} file failed!", e);        }        if (ins != null)            ins.close();        return obj;    }}

2. 编写Teacher类

import com.thoughtworks.xstream.annotations.XStreamAlias;import com.thoughtworks.xstream.annotations.XStreamAsAttribute;import com.thoughtworks.xstream.annotations.XStreamImplicit;import java.util.List;@XStreamAlias(value = "teacher")public class Teacher {    @XStreamAsAttribute    private String name;    @XStreamAsAttribute    private String phone;    @XStreamAsAttribute    private int age;    @XStreamImplicit(itemFieldName = "student")    private List students;    public Teacher() {    }    public Teacher(String name, String phone, int age, List students) {        this.name = name;        this.phone = phone;        this.age = age;        this.students = students;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getPhone() {        return phone;    }    public void setPhone(String phone) {        this.phone = phone;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public List getStudents() {        return students;    }    public void setStudents(List students) {        this.students = students;    }}

3. 编写Student类

import com.thoughtworks.xstream.annotations.XStreamAlias;import com.thoughtworks.xstream.annotations.XStreamAsAttribute;@XStreamAlias(value = "student")public class Student {    @XStreamAsAttribute    private String name;    @XStreamAsAttribute    private int age;    @XStreamAsAttribute    private String address;    public Student() {    }    public Student(String name, int age, String address) {        this.name = name;        this.age = age;        this.address = address;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public String getAddress() {        return address;    }    public void setAddress(String address) {        this.address = address;    }}

4. Test测试类

import java.util.ArrayList;import java.util.List;public class Test {    public static void main(String[] args) {        Student student1 = new Student("Aaron", 24, "广州");        Student student2 = new Student("Abel", 23, "北京");        List students = new ArrayList<>();        students.add(student1);        students.add(student2);        Teacher teacher = new Teacher("Dave", "020-123456", 46, students);        String xml = XmlUtil.toXml(teacher);        System.out.println(xml);    }}

5. 运行结果

    

以上就是xml解析工具包 Xstream的示例代码详解的详细内容,更多请关注考高分网其它相关文章!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/794677.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号