`

xstream简单使用案例

    博客分类:
  • java
阅读更多

XStream主要用来做Java对象和XML 之间的转换器,转换过程是双向的。核心类就是XStream 类,下面就来简单介绍一下XStream最常用,也是最简单的使用

主要有两个方法

toXML()方法。//bean转换为xml

fromXML()方法。//xml转换为bean

默认情况下,java xml 的映 射,是java 成员名对应xml 的元素名,java 类的全名对

xml 根元素的名字。而实际中,往往是xml java 类都有了,要完成相互转换,必须进行别名映射。

别名配置包含三种情况:

1、类别名,用alias(String name, Class type)

2、 类成员别名,用aliasField(String alias, Class definedIn, String fieldName)

3、 类成员作为属性别名,用 aliasAttribute(Class definedIn, String attributeName, String alias)

 好了,现在上代码;

1、   定义Page

@XStreamAlias("Page")

public class Page {

    public  AddressBook addressBook;

    public AddressBook getAddressBook() {

        return addressBook;

    }

    public void setAddressBook(AddressBook addressBook) {

        this.addressBook = addressBook;

    }

}

2、   定义AddressBook

@XStreamAlias("AddressBook")

public class AddressBook  {

     private List<com.xtream.Person> persons;

    public List<Person> getPersons() {

        return persons;

    }

    public void setPersons(List<Person> persons) {

        this.persons = persons;

    }

}

3、   定义Person

@XStreamAlias("Person")

public class Person   {

    @XStreamAsAttribute

    public String name;

    @XStreamAsAttribute

    public String age;

    @XStreamAsAttribute

    public String sex;

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public String getAge() {

        return age;

    }

    public void setAge(String age) {

        this.age = age;

    }

    public String getSex() {

        return sex;

    }

    public void setSex(String sex) {

        this.sex = sex;

    }

}

4、测试入口

public class Main {

    public static void main(String[] args) {

        System.out.println("-----------------xml文件-------------------");

        List list = new ArrayList();

        for (int i = 0; i < 10; i++) {

            Person address = new Person();

            address.setName("张三");

            address.setAge("26");

            address.setSex("");

            list.add(address);

        }

        AddressBook addes = new AddressBook();

        addes.setPersons(list);

        Page page = new Page();

        page.setAddressBook(addes);

         Util.makeXML(page);

        Util.writeXML(Util.makeXML(page));

         System.out.println("-----------------xml文件内容-------------------");

          System.out.println(Util.makeXML(page));

        System.out.println("-----------------xml文件(1) dom4j解析-------------------");

        File f = new File("d://testXtram.xml");

        try {

            InputStream in = new FileInputStream(f);

            Page page1 = Util.readXML(in);

            for (int i = 0; i < page1.getAddressBook().getPersons().size(); i++) {

                Person person = page1.getAddressBook().getPersons().get(i);

                System.out.println(person.getName() + "  " + person.getAge() + "  " + person.getSex());

            }

        } catch (FileNotFoundException e) {

            e.printStackTrace();        }

          System.out.println("-----------------xml文件(2) xstream转换-------------------");

        File f2 = new File("d://testXtram.xml");

        try {

            InputStream in = new FileInputStream(f2);

            Page page2 = Util.readXML2(in);

            for (int i = 0; i < page2.getAddressBook().getPersons().size(); i++) {

                Person person = page2.getAddressBook().getPersons().get(i);

                System.out.println(person.getName() + "  " + person.getAge() + "  " + person.getSex());

            }

        } catch (FileNotFoundException e) {

            e.printStackTrace();          }

    }

}

5public class Util {

    public static String makeXML(Page page) {

        XStream stream = new XStream();

        stream = setXStream(stream);

        String str = stream.toXML(page);

        return str;

    }

    public static void writeXML(String s) {

        FileWriter fw = null;

        try {

            fw = new FileWriter("d://testXtram.xml");

            fw.write(s, 0, s.length());

            fw.flush();

           System.out.println("写文件成功!");

        } catch (IOException e) {

            e.printStackTrace();        }

    }

    public static Page readXML2(InputStream inputStream) {

        XStream stream = new XStream(new DomDriver());

        stream = setXStream(stream);

        return (Page) stream.fromXML(inputStream);

    }

    private static XStream setXStream(XStream stream) {

        stream.alias("Page", Page.class);

        stream.alias("Person", Person.class);

        stream.aliasAttribute(Person.class, "name", "name");

        stream.aliasAttribute(Person.class, "age", "age");

        stream.aliasAttribute(Person.class, "sex", "sex");

        stream.alias("AddressBook", AddressBook.class);

        return stream;

    }

    public static Page readXML(InputStream inputStream) {

         System.out.println("开始读取xml文件并封装为对象!");

        String str = getInputStreamToString(inputStream);

        Page page = new Page();

        AddressBook addressBook = new AddressBook();

        SAXReader reader = new SAXReader();

        Document document = null;

        try {

            document = reader.read(new StringReader(str));

            Element root = document.getRootElement();

            Element root2 = root.element("addressBook").element("persons");

            List<Person> persons = new ArrayList<Person>();

            for (Iterator item = root2.elementIterator(); item.hasNext();) {

                Element element = (Element) item.next();

                Person person = new Person();

                person.setName(String.valueOf(element.element("name").getText()));

                person.setAge(String.valueOf(element.element("age").getText()));

                person.setSex(String.valueOf(element.element("sex").getText()));

                persons.add(person);

            }

            addressBook.setPersons(persons);

        } catch (DocumentException e) {

            e.printStackTrace();          }

        page.setAddressBook(addressBook);

        return page;

    }

    public static String getInputStreamToString(InputStream inputStream) {

        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));

        StringBuilder sb = new StringBuilder();

        String line = null;

        try {

            while ((line = reader.readLine()) != null) {

                sb.append(line + "\n");

            }

        } catch (IOException e) {

            e.printStackTrace();

        } finally {

        }

        return sb.toString();

    }

}

到这里相信都应该明白了怎么用了吧,如有需要代码的话请联系我:QQ:429472944

分享到:
评论

相关推荐

    XStream简单应用实例(xml)

    使用XStream 把 Java 对象序列化为 XML~~~~~~~~~~~~~~~~~

    XStream简单应用实例

    博文链接:https://jetway.iteye.com/blog/59493

    XStream使用方法总结附实例代码

    创建XSteam对象的方式很简单,只需要new XStream()即可。 Java到xml,用toXML()方法。 Xml到Java,用fromXML()方法。 在没有任何设置默认情况下,java到xml的映射,是java成员名对应xml的元素名,java类的全名对应...

    XStream完整jar

    XStream完整jar,里面包含了XStream完整jar,以及一个简单实例

    SSH2 整合简单增删改查实例,仅供学习使用

    SSH2 整合开发,实现简单的增删改查,使用数据库mysql ,附带Google的Gson和Xstream 开发,ajax,简单易懂,仅供学习使用

    java类与xml之间相互转换实例

    使用xstream技术进行类与xml相互转换,简单的应用,快速上手。

    微信公众平台应用开发:方法、技巧与案例.(机械工业.柳峰)

     4.3.2 XStream的使用 80  4.3.3 解析请求消息 83  4.3.4 响应消息对象转XML 85  4.4 案例:消息的接收与响应 88  4.4.1 开发准备工作 88  4.4.2 消息封装类 88  4.4.3 封装消息处理工具 89  4.4.4 ...

    Spring.3.x企业应用开发实战(完整版).part2

    3.2.1 简单实例 3.2.2 类装载器ClassLoader 3.2.3 Java反射机制 3.3 资源访问利器 3.3.1 资源抽象接口 3.3.2 资源加载 3.4 BeanFactory和ApplicationContext 3.4.1 BeanFactory介绍 3.4.2 ApplicationContext介绍 ...

    Spring3.x企业应用开发实战(完整版) part1

    3.2.1 简单实例 3.2.2 类装载器ClassLoader 3.2.3 Java反射机制 3.3 资源访问利器 3.3.1 资源抽象接口 3.3.2 资源加载 3.4 BeanFactory和ApplicationContext 3.4.1 BeanFactory介绍 3.4.2 ApplicationContext介绍 ...

    struts2的rest风格插件实例

    安装 REST 插件非常简单,只需按如下步骤进行即可: 将 Struts 2 项目下 struts2-convention-plugin-2.1.6.jar、struts2-rest-plugin-2.1.6.jar 两个 JAR 包复制到 Web 应用的 WEB-INF/lib 路径下。 由于 Struts 2 ...

    Hedgehog-开源

    Hedgehog是用于简单分布式计算的Java库。 您的代码实例化服务器,发布作业,并在客户端返回结果时得到通知。 客户不必具有工作类别。 刺猬使用JmDNS,XStream,XML-RPC和Jetty。

    Android典型技术模块开发详解

    第四篇 Android应用开发案例 第13章 Ksoap2 13.1 SOAP协议 13.1.1 请求 13.1.2 响应 13.2 WSDL介绍 13.3 Ksoap2应用——天气预报 13.4 Ksoap2参数类型 13.4.1 CXF框架的Web Service 13.4.2 Android端开发 13.5 Base...

Global site tag (gtag.js) - Google Analytics