`
qtlkw
  • 浏览: 307068 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

xstream产生xml和java bean

    博客分类:
  • JAVA
 
阅读更多
转:
/**
*@author: chenyoulong
*@Title:PersonTest.java
*@date 2012-9-28 下午3:25:09
*@Description:TODO
*/
package com.test;

import java.util.ArrayList;
import java.util.List;

import com.entity.PersonBean;
import com.entity.PersonBean.Animal;
import com.entity.PersonBean.Friends;
import com.entity.PersonBean.Pets;
import com.entity.PersonBean.PhoneNumber;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;

/**
* @ClassName:PersonTest
* @author: chenyoulong Email: chen.youlong@payeco.com
* @date :2012-9-28 下午3:25:09
* @Description:TODO
*/
public class PersonTest {

/**
* @Title: main
* @Description: TODO
* @param args
* @return void
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

// toXml
// String xmlStr=new PersonTest().toXml();

// toBean
PersonBean per = new PersonTest().toBean();
// String xmlStr="<person>"+
// "<firstName>chen</firstName>"+
// "<lastName>youlong</lastName>"+
// "<telphone>"+
// "<code>137280</code>"+
// "<number>137280968</number>"+
// "</telphone>"+
// "<faxphone>"+
// "<code>20</code>"+
// "<number>020221327</number>"+
// "</faxphone>"+
// "<friends>"+
// "<name>A1</name>"+
// "<name>A2</name>"+
// "<name>A3</name>"+
// "</friends>"+
// "<pets>"+
// "<pet>"+
// "<name>doly</name>"+
// "<age>2</age>"+
// "</pet>"+
// "<pet>"+
// "<name>Ketty</name>"+
// "<age>2</age>"+
// "</pet>"+
// "</pets>"+
// "</person>";
// PersonBean person=XmlUtil.toBean(xmlStr, PersonBean.class);
// System.out.println("person=firstname=="+person.getFirstName());
// System.out.println("person==Friends==name1=="+person.getFriend().getName().get(0));
// System.out.println("person==Pets==name2=="+person.getPet().getAnimalList().get(1).getName());
//
}

/**
* 注解生产xml
*
* @Title: toXml
* @Description: TODO
* @return String
*/
public String toXml() {
PersonBean per = new PersonBean();
per.setFirstName("chen");
per.setLastName("youlong");

PhoneNumber tel = new PhoneNumber();
tel.setCode(137280);
tel.setNumber("137280968");

PhoneNumber fax = new PhoneNumber();
fax.setCode(20);
fax.setNumber("020221327");
per.setTel(tel);
per.setFax(fax);

// 测试一个标签下有多个同名标签
List<String> friendList = new ArrayList<String>();
friendList.add("A1");
friendList.add("A2");
friendList.add("A3");
Friends friend1 = new Friends();
friend1.setName(friendList);
per.setFriend(friend1);

// 测试一个标签下循环对象
Animal dog = new Animal("doly", 2);
Animal cat = new Animal("Ketty", 2);
List<Animal> petList = new ArrayList<Animal>();
petList.add(dog);
petList.add(cat);
Pets pet = new Pets();
pet.setAnimalList(petList);
per.setPet(pet);

XStream xstream = new XStream(new DomDriver("utf-8")); // 指定编码解析器
xstream.processAnnotations(PersonBean.class);// 如果没有这句,xml中的根元素会是<包.类名>;或者说:注解根本就没生效,所以的元素名就是类的属性
xstream.aliasSystemAttribute(null, "class");
String xmlString = xstream.toXML(per);
System.out.println("xml===" + xmlString);
return xmlString;
}

/**
* toBean
*
* @Title: toBean
* @Description: TODO
* @return
* @return PersonBean
*/
public PersonBean toBean() {
String xmlStr = "<person>" + "<firstName>chen</firstName>"
+ "<lastName>youlong</lastName>" + "<telphone>"
+ "<code>137280</code>" + "<number>137280968</number>"
+ "</telphone>" + "<faxphone>" + "<code>20</code>"
+ "<number>020221327</number>" + "</faxphone>" + "<friends>"
+ "<name>A1</name>" + "<name>A2</name>" + "<name>A3</name>"
+ "</friends>" + "<pets>" + "<pet>" + "<name>doly</name>"
+ "<age>2</age>" + "</pet>" + "<pet>" + "<name>Ketty</name>"
+ "<age>2</age>" + "</pet>" + "</pets>" + "</person>";

XStream xstream = new XStream(new DomDriver()); // 注意:不是new Xstream();
// 否则报错:java.lang.NoClassDefFoundError:
// org/xmlpull/v1/XmlPullParserFactory
xstream.processAnnotations(PersonBean.class);
PersonBean person = (PersonBean) xstream.fromXML(xmlStr);
System.out.println("person=firstname==" + person.getFirstName());
System.out.println("person==Friends==name1=="
+ person.getFriend().getName().get(0));
System.out.println("person==Pets==name=="
+ person.getPet().getAnimalList().get(1).getName());
return person;
}

/**
* 输出xml和解析xml的工具类
*
* @ClassName:XmlUtil
* @author: chenyoulong Email: chen.youlong@payeco.com
* @date :2012-9-29 上午9:51:28
* @Description:TODO
*/
public static class XmlUtil {
/**
* java 转换成xml
*
* @Title: toXml
* @Description: TODO
* @param obj
*            对象实例
* @return String xml字符串
*/
public static String toXml(Object obj) {
XStream xstream = new XStream();
// XStream xstream=new XStream(new DomDriver()); //直接用jaxp dom来解释
// XStream xstream=new XStream(new DomDriver("utf-8"));
// //指定编码解析器,直接用jaxp dom来解释

// //如果没有这句,xml中的根元素会是<包.类名>;或者说:注解根本就没生效,所以的元素名就是类的属性
xstream.processAnnotations(obj.getClass()); // 通过注解方式的,一定要有这句话
return xstream.toXML(obj);
}

/**
* 将传入xml文本转换成Java对象
*
* @Title: toBean
* @Description: TODO
* @param xmlStr
* @param cls
*            xml对应的class类
* @return T xml对应的class类的实例对象
*
*         调用的方法实例:PersonBean person=XmlUtil.toBean(xmlStr,
*         PersonBean.class);
*/
public static <T> T toBean(String xmlStr, Class<T> cls) {
// 注意:不是new Xstream(); 否则报错:java.lang.NoClassDefFoundError:
// org/xmlpull/v1/XmlPullParserFactory
XStream xstream = new XStream(new DomDriver());
xstream.processAnnotations(cls);
T obj = (T) xstream.fromXML(xmlStr);
return obj;
}

}

}
分享到:
评论

相关推荐

    xstream实现xml和java bean 互相转换

    XStream:XStream是一个简单易用的Java库,用于序列化和反序列化对象。它可以将Java对象转换为XML文档,也可以将XML文档转换为Java对象。 pom引用 &lt;groupId&gt;com.thoughtworks.xstream&lt;/groupId&gt; &lt;artifactId&gt;...

    xStream xml to bean

    这个工具类的目标就是利用xStream的功能,方便地将XML文档转换为Java Bean对象,以及将Bean对象转换为XML字符串。 xStream的核心思想是通过反射和类型映射来实现对象与XML之间的转换。它使用一种称为“annoation”...

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

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

    xstream+xmlpull xml to bean &&bean to xml

    1. xstream-1.4.jar:这是XStream的主要库文件,包含了所有必要的类和方法,用于实现XML和Java对象的相互转换。 2. kxml2-2.3.0.jar:这是一个轻量级的XML解析器,常被XStream用来作为XML读写的底层实现。KXML2提供...

    将对象(java bean)转换为xml字符串

    XStream不仅能够将Java对象转换为XML,还可以反向将XML转换回Java对象,极大地简化了对象与XML之间的序列化和反序列化过程。 XStream库是由Johannes Lehtinen创建的一个开源项目,它是基于Java的,可以处理复杂的...

    JavaXml及Bean互转

    本篇将详细介绍两种常用的Java XML与Bean互转方法:XStream库和JAXB(Java Architecture for XML Binding)框架。 一、XStream库 1. **XStream简介**: XStream是一个用于Java的轻量级库,它提供了一种简单的API来...

    Converter between XML and Java Bean

    总之,"Converter between XML and Java Bean"涉及的关键知识点是利用如XStream这样的库实现XML与Java对象之间的转换,这在Java开发中是非常重要且实用的技能,尤其在处理数据交换、持久化存储和跨系统通信时。...

    xstream 1.3.1.jar bean对象转换为xml

    总结起来,XStream 1.3.1.jar提供了一个简单易用的API,使得Java开发者能轻松地在Java Bean对象和XML之间进行转换。它简化了序列化和反序列化的过程,是许多Java项目的理想选择,特别是那些需要处理XML数据流的项目...

    XStream在JavaBean与XML/JSON 之间相互转换

    XStream是一个开源库,它为Java对象提供了简单且直观的XML序列化和反序列化的解决方案。它不仅能够将Java对象转换成XML,反之亦然,还能支持JSON格式的转换。这个强大的工具在处理数据交换、持久化或配置文件时非常...

    xml to bean or bean to xml

    在Java开发中,XML(可扩展标记语言)和Bean对象之间的转换是非常常见的需求。XML用于数据存储和交换,而Bean对象则是Java中的数据容器。"xml to bean or bean to xml"这一主题涉及到如何将XML文档的数据映射到Java ...

    xstream-1.3.1.jar javabean与xml之间的转化

    - **简单易用:**XStream 提供了简洁的 API,使得在 Java 代码中进行 XML 和 Java 对象之间的转换变得非常容易。 - **自定义映射:**如果默认的自动映射不符合需求,可以使用注解或配置文件来自定义字段与 XML 元素...

    xstream 让javabean和xml互相转换

    XStream的核心思想是通过反射机制,将Java对象的字段映射到XML的元素和属性,以及反向操作将XML解析回Java对象。它的优势在于简洁的API和高度的自定义性,使得开发者可以轻松处理复杂的对象结构和序列化规则。 首先...

    xml与javabean之间的相互转换,很方便,导入即可使用

    XStream是一款强大的Java库,它能将Java对象序列化为XML,同时也能将XML反序列化为Java对象,极大地简化了XML与JavaBean之间的交互。其工作原理主要是通过反射机制获取Java对象的属性,并将其映射到XML元素上。 ...

    java对象与xml的互相转换

    通过定义Java类和使用JAXB提供的`Marshaller`和`Unmarshaller`,我们可以方便地在Java对象和XML文档之间进行互换。对于更复杂的场景,例如Web服务交互,可能还需要其他相关的库,如`jaxws-api`。

    XML2Bean

    总的来说,XML2Bean工具利用XStream库实现了XML数据和Java Bean之间的无缝转换,为开发者提供了便利。理解XML和Java Bean的概念,以及XStream的工作原理,将有助于更好地利用这个工具。而具体的实现细节,可以通过...

    XML、JAVA、JSON多种方式互相转换

    3. Java对象到XML和JSON: - JAXB允许直接将Java对象转换为XML,反之亦然。通过创建对应的Java类并使用`Marshaller`和`Unmarshaller`接口进行操作。 - Jackson库的`ObjectMapper`类可以将Java对象直接序列化为JSON...

    xml和bean之间的相互转换源码

    除了Java自带的API外,还有一些第三方库如Apache的`XStream`,它提供了更简洁的API来实现XML和Bean的转换。XStream通过反射机制自动处理对象到XML的映射,只需简单的几行代码就可以完成转换。 5. **转换步骤**: ...

    bean2xml.zip

    解压后,我们可以看到一个名为"bean2xml"的文件,这可能是Java源代码或者测试类,用于演示如何使用XStream进行转换。 要使用XStream,首先需要添加XStream库到项目中。如果你使用的是Maven,可以在pom.xml文件中...

    Xstream使用说明

    通过Xstream可以轻松地将Java对象序列化为XML文档,或者将XML文档反序列化为Java对象。与传统的XML序列化方式相比,Xstream的优势在于它无需编写额外的辅助类或映射文件,简化了XML序列化的流程。 #### 二、Xstream...

    XStream转换

    XStream是一个强大的Java库,它允许开发者以XML格式序列化和反序列化Java对象。这个库简化了在Java对象和XML之间进行数据交换的过程。在本文中,我们将深入探讨XStream的工作原理、如何使用它来实现bean到XML、XML到...

Global site tag (gtag.js) - Google Analytics