Xstream是一种OXMapping 技术,是用来处理XML文件序列化的框架,在将javaBean序列化,或将XML文件反序列化的时候,不需要其它辅助类和映射文件,使得XML序列化不再繁索。
一、所需jar包
下载xstream-x.x.x.jar,放到项目中
二、无anotation实例
1、先创建一个Person.java
package com.xu.xstream; import java.util.List; public class Person { private int id; private String name; private String sex; private List<Address> address; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public List<Address> getAddress() { return address; } public void setAddress(List<Address> address) { this.address = address; } @Override public String toString() { return "Person [id=" + id + ", name=" + name + ", sex=" + sex+ ", address=" + address + "]"; } }
2、创建PersonXStream.java操作
package com.xu.xstream; import java.util.ArrayList; import java.util.List; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; /** * PersonXStream.java * @author XuRuiLu * * 2015-3-2 */ public class PersonXStream { /** * java对象转换成XML * @param person * @return */ public static String javaObjectToXml(Person person){ XStream xstream = new XStream(new DomDriver()); xstream.alias("Person", Person.class); //使用别名 xstream.alias("Address", Address.class); //使用别名 // xstream.useAttributeFor(Person.class, "name"); //将本类中的字段来作为xml的属性 xstream.addImplicitCollection(Person.class, "address"); //隐身集合 return xstream.toXML(person); } /** * Xml转换成java对象 * @param xml * @return */ public static Person xmlToJavaObject(String xml){ Person person = null; XStream xstream = new XStream(new DomDriver()); //注意这里前面是用别名,这里也要用别名,不然会报错找不到节点 xstream.alias("Person", Person.class); xstream.alias("Address", Address.class); xstream.addImplicitCollection(Person.class, "address"); //隐身集合 person = (Person)xstream.fromXML(xml); return person; } /** * 测试javaObjectToXml方法 */ public static void testJavaObjectToXml(){ List<Address> addressList = new ArrayList<Address>(); Address address = new Address("郑州市经三路", "123456"); Address address2 = new Address("徐州市经三路", "1234"); addressList.add(address); addressList.add(address2); Person person = new Person(); person.setId(1); person.setName("zhangsan"); person.setSex("男"); person.setAddress(addressList); String str = javaObjectToXml(person); System.out.println(str); } /** * 测试XmlToJavaObject方法 */ public static void testXmlToJavaObject(){ String xml = "<Person><id>1</id><name>zhangsan</name><sex>男</sex><Address><add>郑州市经三路</add>" + "<zipcode>123456</zipcode></Address><Address><add>徐州市经三路</add><zipcode>1234</zipcode></Address></Person>"; Person person = xmlToJavaObject(xml); System.out.println(person.toString()); } public static void main(String[] args) { // testJavaObjectToXml(); //测试java对象转成Xml testXmlToJavaObject(); //测试XmlToJavaObject方法 } }
3. 使每个节点都加上<![CDATA[]]>
import java.io.Writer; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.core.util.QuickWriter; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; import com.thoughtworks.xstream.io.xml.PrettyPrintWriter; import com.thoughtworks.xstream.io.xml.XppDriver; public class XStreamCDATA { protected static String PREFIX_CDATA = "<![CDATA["; protected static String SUFFIX_CDATA = "]]>"; public static XStream initXStream() { XStream xstream = new XStream(new XppDriver() { public HierarchicalStreamWriter createWriter(Writer out) { return new PrettyPrintWriter(out) { // 对所有xml节点的转换都增加CDATA标记 boolean cdata = true; @SuppressWarnings("unchecked") public void startNode(String name, Class clazz) { super.startNode(name, clazz); } protected void writeText(QuickWriter writer, String text) { if (cdata) { writer.write(PREFIX_CDATA); writer.write(text); writer.write(SUFFIX_CDATA); } else { writer.write(text); } } }; } }); return xstream; } }
三、anotation操作
1、先创建User.java,Address.java类
User.java
package com.xu.xstream; import java.util.List; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamImplicit; @XStreamAlias("User") //别名 public class User { private int id; //@XStreamOmitField private String name; private String password; @XStreamImplicit //隐式集合 private List<Address> addressList; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public List<Address> getAddressList() { return addressList; } public void setAddressList(List<Address> addressList) { this.addressList = addressList; } @Override public String toString() { return "User [id=" + id + ", name=" + name + ", password=" + password + ", addressList=" + addressList + "]"; } }
Address.java
package com.xu.xstream; import com.thoughtworks.xstream.annotations.XStreamAlias; @XStreamAlias("Address") public class Address { private String add; private String zipcode; public Address() { } public Address(String add, String zipcode) { this.add = add; this.zipcode = zipcode; } public String getAdd() { return add; } public void setAdd(String add) { this.add = add; } public String getZipcode() { return zipcode; } public void setZipcode(String zipcode) { this.zipcode = zipcode; } @Override public String toString() { return "Address [add=" + add + ", zipcode=" + zipcode + "]"; } }
3、创建UserTest.java测试
package com.xu.xstream; import java.util.ArrayList; import java.util.List; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; public class UserTest { /** * 测试java对象转换XMl */ public static void testJavaObjectToXml(){ XStream xstream = new XStream(new DomDriver()); xstream.processAnnotations(User.class); User user = new User(); user.setId(1); user.setName("zhangsan"); user.setPassword("password"); List<Address> addressList = new ArrayList<Address>(); Address address = new Address("郑州市经三路", "123456"); Address address2 = new Address("徐州市经三路", "1234"); addressList.add(address); addressList.add(address2); user.setAddressList(addressList); System.out.println(xstream.toXML(user)); } /** * 测试XML转换成java对象 */ public static void testXmlToJavaObject(){ String xml = "<User><id>1</id><name>zhangsan</name><password>password</password>" + "<Address><add>郑州市经三路</add><zipcode>123456</zipcode>" + "</Address><Address><add>徐州市经三路</add><zipcode>1234</zipcode>" + "</Address></User>"; User user = null; XStream xstream = new XStream(new DomDriver()); xstream.processAnnotations(User.class); //注意这里前面是用别名,这里也要用别名,不然会报错找不到节点 user = (User)xstream.fromXML(xml); System.out.println(user.toString()); } public static void main(String[] args) { // testJavaObjectToXml(); //调用 测试java对象转换XMl方法 testXmlToJavaObject(); //调用 测试XML转换成java对象方法 } }
相关推荐
为了演示 XStream 的基本用法,可以创建一个新的 Java 项目。首先,定义两个简单的 Java 类:`Person` 和 `PhoneNumber`。`Person` 类包含姓名和电话号码属性,而 `PhoneNumber` 类则表示一个电话号码。如下所示: ...
《XStream的高级用法与自定义输出结构详解》 XStream是一款强大的Java库,用于将Java对象序列化为XML,以及将XML反序列化回Java对象。它以其简洁的API和灵活的配置赢得了广大开发者喜爱。在日常开发中,我们不仅...
#### 二、Xstream基本使用 Xstream的使用非常简单直观,下面通过一个简单的示例来展示如何使用Xstream进行序列化和反序列化。 ##### 2.1 JavaBean定义 首先定义一个简单的`Person`类作为JavaBean: ```java ...
### XStream 的基本概念 1. **序列化**: 将 Java 对象转换为 XML 过程称为序列化。XStream 提供了 `toXML()` 方法,可以直接将一个对象转换成 XML 字符串。 2. **反序列化**: 反之,从 XML 文本还原为 Java 对象的...
在Java开发中,数据的序列化与反序列...通过了解其基本用法和自定义功能,开发者可以在项目中有效地利用XML进行数据交换和存储。在实际应用中,根据项目需求进行适当的配置和安全优化,可以确保代码的稳定性和安全性。
**XStream简介** XStream是一款强大的Java库,用于将Java对象序列化为XML,反之亦然。它由Joe Walnes创建,提供了一种简洁而直观...了解和掌握XStream的基本用法和高级特性,能帮助开发者更高效地处理XML相关的任务。
首先,我们需要了解XStream的基本用法。XStream的核心是`XStream`类,它提供了`toXML()`方法用于将Java对象转换为XML字符串,以及`fromXML()`方法用于反向操作。要使用XStream,你需要先创建一个`XStream`实例,然后...
三、XStream的基本用法 1. 对象转XML: XStream的`toXML()`方法可以将Java对象转换为XML字符串。例如,对于一个名为`Person`的对象,通过`xstream.toXML(person)`即可得到对应的XML表示。 2.XML转对象: 使用`from...
博文链接(https://676744379-qq-com.iteye.com/blog/965624)可能提供了关于如何使用XStream的详细教程,包括安装、配置以及基本用法示例,对于初学者来说是一份很好的参考资料。 在实际使用中,`xstream-1.3.1....
在本学习文档中,我们将深入探讨 XStream 的核心概念、用法以及如何在实际项目中应用。 一、XStream 简介 XStream 能够将复杂的 Java 对象结构转换成易于读写的 XML 格式,同时也能将 XML 文档还原为对应的 Java ...
### XStream解析各种数据格式 #### 一、XStream简介 XStream 是一个简单高效的 Java 库,用于将 Java 对象序列化为 ...通过本文介绍的基本使用方法和高级特性,开发者可以更好地利用 XStream 来满足项目的实际需求。
本文将深入探讨XStream 1.4.2中的核心特性、使用方法以及常见应用场景。 一、XStream的核心特性 1. **简单的API**:XStream的核心设计理念就是简洁易用,它的API设计使得对象序列化和反序列化的过程直观而直接,...
2. **基本使用** XStream的核心类是`XStream`,你可以通过创建其实例并调用`fromXML()`和`toXML()`方法来实现XML与Java对象之间的转换。例如,如果你有一个简单的Java对象`Person`: ```java class Person { ...
XStream 是一个强大的 Java 库,它允许程序员将 Java 对象序列化为 XML,反之亦然。这个过程称为对象-XML 映射。...理解 XStream 的基本用法和高级特性,可以帮助你在实际开发中更有效地利用这一工具。
在 XStream 1.4 版本中,它已经相当成熟,具有广泛的类型支持,包括基本类型、数组、集合以及自定义复杂对象。 ### 1. **XStream 的核心概念** - **序列化(Serialization)**: 将 Java 对象转换为 XML 流程,方便...
首先,我们需要理解XStream的基本用法。XStream的核心概念是通过为Java对象定义一个映射,使得对象的字段与XML元素一一对应。这可以通过使用`@XStreamAlias`注解或者在类级别定义`@XStreamConverter`来实现。例如: ...
在`beanToXml()` 方法中,同样需要初始化xStream实例,然后使用`toXML()` 方法将Bean对象转换为XML字符串: ```java public String beanToXml(YourBeanClass bean) { XStream xstream = new XStream(new DomDriver...
本文将详细介绍XStream的基本用法、配置选项以及如何利用它来进行对象到XML的序列化和反序列化操作。 #### 一、XStream简介 XStream是一种简单高效的工具类库,用于实现Java对象与XML数据格式之间的转换。它通过...
基本使用** XStream的使用非常直观。首先,我们需要创建一个XStream实例,然后使用它来序列化或反序列化对象。 ```java import com.thoughtworks.xstream.XStream; public class XStreamExample { public static...