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(); }
}
}
5、public 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的序列化和反序列化操作,这是Java开发中一种实用的数据处理技巧,尤其适用于需要XML格式数据交换的场景。通过学习和实践,开发者...
2. **基本序列化**: 创建一个Java对象,然后使用XStream实例将其转换为XML字符串: ```java import com.thoughtworks.xstream.XStream; public class User { private String name; private int age; // ...
2. **初始化 XStream**: 创建 `XStream` 实例,通常建议使用 `XStream(xmlDriver)` 初始化,其中 `xmlDriver` 可以是 `JDOMDriver` 或 `DomDriver` 等。 3. **注册转换器**: 如果需要处理自定义类型,可能需要注册...
这个实例将深入探讨如何使用XStream进行XML操作。 **1. XStream简介** XStream是一个开源库,由Joe Walnes创建,它提供了Java对象到XML和XML到Java对象的直接映射。它的主要优点是其简洁的API和易于理解的输出。...
以下是一个简单的示例,展示了如何创建 `XStream` 实例并使用它来将 `Person` 对象转换为 XML: ```java import com.thoughtworks.xstream.XStream; public class Main { public static void main(String[] args)...
【Xstream实例】是关于如何使用Xstream库处理XML数据并进行文件操作的实践示例。Xstream是一个轻量级的Java库,它允许你将Java对象序列化为XML,反之亦然,使得XML数据的读写变得极其简单。在这个实例中,我们将探讨...
在本文中,我们将深入探讨Xstream的核心概念、使用场景以及如何通过实例进行操作。 首先,Xstream的核心优势在于其易用性。它通过简单的API使XML与Java对象之间的映射变得直观。通过使用`XStream`类的`toXML()`和`...
首先创建一个Java对象,然后使用XStream实例的`toXML()`方法将其转换为XML字符串。 ```java import com.thoughtworks.xstream.XStream; public class User { private String name; private int age; // 构造器...
以下是一个简单的示例,展示了`XStream`的使用: ```java import com.thoughtworks.xstream.XStream; import java.util.ArrayList; import java.util.List; public class Person { private String name; private...
在`xmlAnalysis`文件夹中,可能包含了一个简单的Java程序,演示了如何使用DOM、SAX、StAX和XStream解析XML文件,并展示了XStream如何在JavaBean与XML之间进行转换。你可以运行这些代码,观察输出结果,以加深理解。...
XStream的核心类是`XStream`,你可以通过创建其实例并调用`fromXML()`和`toXML()`方法来实现XML与Java对象之间的转换。例如,如果你有一个简单的Java对象`Person`: ```java class Person { String name; int ...
Java中的xStream库提供了一个简单易用的方式来将Java对象序列化为XML,反之亦然,即反序列化XML回Java对象。 **xStream简介** xStream是一个开源的Java库,由Johannes Link创建。它提供了简洁、直观的API来处理XML...
在`beanToXml()` 方法中,同样需要初始化xStream实例,然后使用`toXML()` 方法将Bean对象转换为XML字符串: ```java public String beanToXml(YourBeanClass bean) { XStream xstream = new XStream(new DomDriver...
2. 创建 XStream 实例:`XStream xstream = new XStream();` 3. 配置 XStream:根据需求设置命名策略、类型转换器等。 4. 序列化对象:`String xml = xstream.toXML(yourObject);` 5. 反序列化 XML:`YourObject ...
例如,你可以通过简单的几行代码将一个对象实例转换为XML,并在稍后恢复原始对象。 ```java XStream xstream = new XStream(); String xml = xstream.toXML(yourObject); YourObject restoredObject = (YourObject)...
XStream由Johannes Link创建,它通过简单的API提供了高效的序列化和反序列化功能。XStream的亮点在于其自动映射Java对象到XML的能力,使得XML结构与Java对象的字段一一对应,无需编写复杂的转换代码。 二、XStream...
创建 XStream 实例是使用 XStream 的第一步。可以通过指定不同的驱动器来初始化 XStream 对象,例如使用 DOM 驱动器: ```java XStream xstream = new XStream(new DomDriver()); ``` 2. **序列化Java对象为...
Xstream通过使用注解提供了高度的灵活性,使得XML的生成和解析更加简单和直观。在这篇文章中,我们将深入探讨如何利用Xstream的注解来处理XML。 首先,要使用Xstream,我们需要在项目中引入其依赖。如果你使用的是...