`

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简单应用实例(xml)"涉及了如何使用XStream库进行Java对象到XML的序列化和反序列化操作,这是Java开发中一种实用的数据处理技巧,尤其适用于需要XML格式数据交换的场景。通过学习和实践,开发者...

    XStream简单应用实例

    2. **基本序列化**: 创建一个Java对象,然后使用XStream实例将其转换为XML字符串: ```java import com.thoughtworks.xstream.XStream; public class User { private String name; private int age; // ...

    xstream使用案例

    2. **初始化 XStream**: 创建 `XStream` 实例,通常建议使用 `XStream(xmlDriver)` 初始化,其中 `xmlDriver` 可以是 `JDOMDriver` 或 `DomDriver` 等。 3. **注册转换器**: 如果需要处理自定义类型,可能需要注册...

    XStream解析XML实例

    这个实例将深入探讨如何使用XStream进行XML操作。 **1. XStream简介** XStream是一个开源库,由Joe Walnes创建,它提供了Java对象到XML和XML到Java对象的直接映射。它的主要优点是其简洁的API和易于理解的输出。...

    XStream使用文档 wd.docx

    以下是一个简单的示例,展示了如何创建 `XStream` 实例并使用它来将 `Person` 对象转换为 XML: ```java import com.thoughtworks.xstream.XStream; public class Main { public static void main(String[] args)...

    Xstream实例

    【Xstream实例】是关于如何使用Xstream库处理XML数据并进行文件操作的实践示例。Xstream是一个轻量级的Java库,它允许你将Java对象序列化为XML,反之亦然,使得XML数据的读写变得极其简单。在这个实例中,我们将探讨...

    xstream使用小记

    在本文中,我们将深入探讨Xstream的核心概念、使用场景以及如何通过实例进行操作。 首先,Xstream的核心优势在于其易用性。它通过简单的API使XML与Java对象之间的映射变得直观。通过使用`XStream`类的`toXML()`和`...

    使用XStream操作xml教程

    首先创建一个Java对象,然后使用XStream实例的`toXML()`方法将其转换为XML字符串。 ```java import com.thoughtworks.xstream.XStream; public class User { private String name; private int age; // 构造器...

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

    以下是一个简单的示例,展示了`XStream`的使用: ```java import com.thoughtworks.xstream.XStream; import java.util.ArrayList; import java.util.List; public class Person { private String name; private...

    xml解析及使用XStream实现javaBean与xml之间的转换

    在`xmlAnalysis`文件夹中,可能包含了一个简单的Java程序,演示了如何使用DOM、SAX、StAX和XStream解析XML文件,并展示了XStream如何在JavaBean与XML之间进行转换。你可以运行这些代码,观察输出结果,以加深理解。...

    XStream Java下的使用

    XStream的核心类是`XStream`,你可以通过创建其实例并调用`fromXML()`和`toXML()`方法来实现XML与Java对象之间的转换。例如,如果你有一个简单的Java对象`Person`: ```java class Person { String name; int ...

    Java用xStream拼接xml

    Java中的xStream库提供了一个简单易用的方式来将Java对象序列化为XML,反之亦然,即反序列化XML回Java对象。 **xStream简介** xStream是一个开源的Java库,由Johannes Link创建。它提供了简洁、直观的API来处理XML...

    xStream xml to bean

    在`beanToXml()` 方法中,同样需要初始化xStream实例,然后使用`toXML()` 方法将Bean对象转换为XML字符串: ```java public String beanToXml(YourBeanClass bean) { XStream xstream = new XStream(new DomDriver...

    xStream完整Jar包

    2. 创建 XStream 实例:`XStream xstream = new XStream();` 3. 配置 XStream:根据需求设置命名策略、类型转换器等。 4. 序列化对象:`String xml = xstream.toXML(yourObject);` 5. 反序列化 XML:`YourObject ...

    xstream相关的jar包

    例如,你可以通过简单的几行代码将一个对象实例转换为XML,并在稍后恢复原始对象。 ```java XStream xstream = new XStream(); String xml = xstream.toXML(yourObject); YourObject restoredObject = (YourObject)...

    xstream教程资料.rar

    XStream由Johannes Link创建,它通过简单的API提供了高效的序列化和反序列化功能。XStream的亮点在于其自动映射Java对象到XML的能力,使得XML结构与Java对象的字段一一对应,无需编写复杂的转换代码。 二、XStream...

    XStream解析各种数据格式

    创建 XStream 实例是使用 XStream 的第一步。可以通过指定不同的驱动器来初始化 XStream 对象,例如使用 DOM 驱动器: ```java XStream xstream = new XStream(new DomDriver()); ``` 2. **序列化Java对象为...

    java 利用Xstream注解生成和解析xml

    Xstream通过使用注解提供了高度的灵活性,使得XML的生成和解析更加简单和直观。在这篇文章中,我们将深入探讨如何利用Xstream的注解来处理XML。 首先,要使用Xstream,我们需要在项目中引入其依赖。如果你使用的是...

Global site tag (gtag.js) - Google Analytics