package test;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringEscapeUtils;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
public class Start
{
/**
* @param args
*/
public static void main(String[] args)
{
System.out
.println("----------XStream学 习:http://lavasoft.blog.51cto.com----------");
// 目标对象
Address address1 = new Address("郑州市经三路", "450001");
Address address2 = new Address("西安市雁塔路", "710002");
List<Address> addList = new ArrayList<Address>();
addList.add(address1);
addList.add(address2);
Profile profile = new Profile("软件工程师", "13512129933", "备注说明");
Person person = new Person("熔岩", "27", profile, addList);
// 转换装配
XStream xStream = new XStream(new DomDriver());
/************** 设置类别名 ****************/
xStream.alias("PERSON", Person.class);
xStream.alias("PROFILE", Profile.class);
xStream.alias("ADDRESS", Address.class);
output(1, xStream, person);
/************* 设置类成员的别名 ***************/
// 设置Person类的name成员别名Name
xStream.aliasField("Name", Person.class, "name");
/*
* [注意] 设置Person类的profile成员别名PROFILE,这个别名和Profile类的别名一致,
* 这样可以保持XStream对象可以从profile成员生成的xml片段直接转换为Profile成员,
* 如果成员profile的别名和Profile的别名不一致,则profile成员生成的xml片段不可
* 直接转换为Profile对象,需要重新创建XStream对象,这岂不给自己找麻烦?
*/
xStream.aliasField("PROFILE", Person.class, "profile");
xStream.aliasField("ADDLIST", Person.class, "addlist");
xStream.aliasField("Add", Address.class, "add");
xStream.aliasField("Job", Profile.class, "job");
output(2, xStream, person);
/******* 设置类成员为xml一个元素上的属性 *******/
xStream.useAttributeFor(Address.class, "zipcode");
/************* 设置属性的别名 ***************/
xStream.aliasAttribute(Address.class, "zipcode", "Zipcode");
output(3, xStream, person);
/************* 将xml转为java对象 ******× ****/
String person_xml = "<PERSON>\n" + " <name>熔岩</name>\n"
+ " <age>27</age>\n" + " <PROFILE>\n" + " <job>软件工程师</job>\n"
+ " <tel>13512129933</tel>\n" + " <remark>备注说明</remark>\n"
+ " </PROFILE>\n" + " <addlist>\n"
+ " <ADDRESS Zipcode=\"450001\">\n" + " <add>郑州市经三路</add>\n"
+ " </ADDRESS>\n" + " <ADDRESS Zipcode=\"710002\">\n"
+ " <add>西安市雁塔路</add>\n" + " </ADDRESS>\n" + " </addlist>\n"
+ "</PERSON>";
String profile_xml = " <PROFILE>\n" + " <job>软件工程师</job>\n"
+ " <tel>13512129933</tel>\n" + " <remark>备注说明</remark>\n"
+ " </PROFILE>";
String address_xml = "<ADDRESS Zipcode=\"710002\">\n"
+ "<add>西安市雁塔路</add>\n" + " </ADDRESS>";
// 同样实用上面的XStream对象xStream
// System.out.println(xStream.fromXML(person_xml).toString());
// System.out.println(xStream.fromXML(profile_xml).toString());
System.out.println(xStream.fromXML(address_xml).toString());
}
public static void output(int i, XStream xStream, Object obj)
{
String xml = xStream.toXML(obj);
System.out.println(">>>第[ " + i + "]次输出\n");
System.out.println(xml + "\n");
}
}
以上是启动类
==========================
package test;
import java.util.List;
public class Person
{
private String name;
private String age;
private Profile profile;
private List<Address> addlist;
public Person(String name, String age, Profile profile,
List<Address> addlist)
{
this.name = name;
this.age = age;
this.profile = profile;
this.addlist = addlist;
}
public String toString()
{
return "Person{" + "name='" + name + '\'' + ", age='" + age + '\''
+ ", profile=" + profile + ", addlist=" + addlist + '}';
}
}
Person 类,下面两个类是Person的属性
======================
package test;
public class Profile
{
private String job;
private String tel;
private String remark;
public Profile(String job, String tel, String remark)
{
this.job = job;
this.tel = tel;
this.remark = remark;
}
public String toString()
{
return "Profile{" + "job='" + job + '\'' + ", tel='" + tel + '\''
+ ", remark='" + remark + '\'' + '}';
}
}
package test;
public class Address
{
private String add;
private String zipcode;
public Address(String add, String zipcode)
{
this.add = add;
this.zipcode = zipcode;
}
public String toString()
{
return "Address{" + "add='" + add + '\'' + ", zipcode='" + zipcode
+ '\'' + '}';
}
}
分享到:
相关推荐
本篇将详细讲解XML的解析方式及其在Java中的应用,特别是如何使用XStream库进行JavaBean与XML之间的互转。 1. **XML解析方式** - DOM解析:Document Object Model,它一次性加载整个XML文档到内存,形成一棵树形...
**XStream:JavaBean与XML/JSON之间的转换大师** XStream是一个开源库,它为Java对象提供了简单且直观的XML序列化和反序列化的解决方案。它不仅能够将Java对象转换成XML,反之亦然,还能支持JSON格式的转换。这个...
这篇博客“xstream 让javabean和xml互相转换”深入探讨了如何利用XStream库实现这一功能。 XStream的核心思想是通过反射机制,将Java对象的字段映射到XML的元素和属性,以及反向操作将XML解析回Java对象。它的优势...
这篇博客将探讨如何使用XStream库实现JavaBean到XML字符串以及XML字符串回转到JavaBean的过程。 首先,让我们了解XStream的基本概念。XStream由Johannes Brodskiy创建,它是一个基于Java的库,提供了简单且高性能的...
JavaBean与XML之间的互转是开发中的常见需求,这允许我们在不依赖具体实现的情况下存储和传输数据。以下是一些关于如何在Java中实现这种转换的关键知识点: 1. **JAXB(Java Architecture for XML Binding)**:...
这篇内容将主要介绍如何利用xUtils进行断点下载、XStream库实现XML与JavaBean之间的互相转换,以及如何启动本地音乐播放器。这些技术都是Android应用开发中常见的需求,对提升用户体验和应用功能具有积极的作用。 ...
这篇博客主要探讨了几种用于这些格式互转的工具,下面将详细介绍这些工具及其使用方法。 1. **Gson** (Google的JSON库) Gson是由Google提供的一个开源库,它可以将Java对象转换为JSON字符串,反之亦然。使用Gson,...
而JavaBean是Java编程中的一种特殊类,通常用来封装业务逻辑或数据,符合特定规范,具有getter和setter方法。在Java开发中,有时我们需要将XML数据转换为Java对象,反之亦然,这时XStream库就派上了用场。 XStream...
引入这个库到你的项目中,就可以开始使用XStream进行JavaBean和XML的相互转化了。 使用XStream时,首先需要实例化XStream对象,然后通过`alias()`方法定义别名,以便简化XML中的元素名称。接着,调用`fromXML()`或`...
在Java编程中,JavaBean是一种遵循特定规则的对象,通常用于数据封装和业务逻辑处理。将JavaBean转换为XML是常见的数据交换格式转换需求,特别是在Web服务、数据存储或配置文件中。本文将深入探讨三种将JavaBean转换...
在标题和描述中提到的 "xstream-1.3.1.jar" 是 XStream 的一个版本,这个 JAR 文件包含了所有必要的类和资源,使得开发者能够在他们的应用程序中使用 XStream。 **XStream 库的核心功能:** 1. **序列化:**...
xstream中xml与javaBean的互转
xml与JavaBean互相转换的好工具---Xstream,能够很方便的实现xml与JavaBean之间的转换,这在系统之间进行信息交互是非常方便的
XStream不仅能够将Java对象转换为XML,还可以反向将XML转换回Java对象,极大地简化了对象与XML之间的序列化和反序列化过程。 XStream库是由Johannes Lehtinen创建的一个开源项目,它是基于Java的,可以处理复杂的...
xstream-1.4.2.jar,xpp3_min-1.1.4.jar,xmlpull-1.1.3.1.jar 包括 //XML --> JavaBean, //XML --> JavaBean //JavaBean --> JSON,//JSON--> JavaBean
除了JAXB,还可以使用DOM API手动解析XML并设置JavaBean的属性,或者使用第三方库如Apache的Digester或XStream等进行转换。 在实际应用中,我们还需要关注一些细节问题,比如XML命名空间(Namespace)的处理、XML...
Javabean基于xstream包实现转XML文档的方法 Javabean是一种简单的Java类,用于封装数据,而xstream包是一个流行的XML序列化工具,通过使用xstream包,可以将Javabean对象转换为XML文档。下面将详细介绍Javabean基于...
对于JavaBean到XML的转化,XStream 1.4.8提供了强大的类映射和自定义转换功能。 3. **XPP3库** xpp3-1.1.4c是XPP3库的一个版本,它是XML Pull解析器的实现。XPP3(XML Pull Processing)是一种轻量级的解析XML的...
JavaBean生成XML是一种常见的数据序列...通过定义JavaBean,初始化XStream,配置别名,然后调用相应的转换方法,即可完成数据的序列化和反序列化过程。这个过程在处理跨平台数据交换、持久化存储或网络通信时非常有用。