`
zhushaolong
  • 浏览: 64347 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

XStream和JavaBean互转【转】

阅读更多
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解析及使用XStream实现javaBean与xml之间的转换

    本篇将详细讲解XML的解析方式及其在Java中的应用,特别是如何使用XStream库进行JavaBean与XML之间的互转。 1. **XML解析方式** - DOM解析:Document Object Model,它一次性加载整个XML文档到内存,形成一棵树形...

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

    **XStream:JavaBean与XML/JSON之间的转换大师** XStream是一个开源库,它为Java对象提供了简单且直观的XML序列化和反序列化的解决方案。它不仅能够将Java对象转换成XML,反之亦然,还能支持JSON格式的转换。这个...

    xstream 让javabean和xml互相转换

    这篇博客“xstream 让javabean和xml互相转换”深入探讨了如何利用XStream库实现这一功能。 XStream的核心思想是通过反射机制,将Java对象的字段映射到XML的元素和属性,以及反向操作将XML解析回Java对象。它的优势...

    使用xstream实现对JavaBean与xml字符串的互转

    这篇博客将探讨如何使用XStream库实现JavaBean到XML字符串以及XML字符串回转到JavaBean的过程。 首先,让我们了解XStream的基本概念。XStream由Johannes Brodskiy创建,它是一个基于Java的库,提供了简单且高性能的...

    Xml与javaBean互转.zip

    JavaBean与XML之间的互转是开发中的常见需求,这允许我们在不依赖具体实现的情况下存储和传输数据。以下是一些关于如何在Java中实现这种转换的关键知识点: 1. **JAXB(Java Architecture for XML Binding)**:...

    android xUtils断点下载+xml与javaBean互转+打开本地音乐播放器

    这篇内容将主要介绍如何利用xUtils进行断点下载、XStream库实现XML与JavaBean之间的互相转换,以及如何启动本地音乐播放器。这些技术都是Android应用开发中常见的需求,对提升用户体验和应用功能具有积极的作用。 ...

    json、javaBean、xml互转的几种工具介绍

    这篇博客主要探讨了几种用于这些格式互转的工具,下面将详细介绍这些工具及其使用方法。 1. **Gson** (Google的JSON库) Gson是由Google提供的一个开源库,它可以将Java对象转换为JSON字符串,反之亦然。使用Gson,...

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

    而JavaBean是Java编程中的一种特殊类,通常用来封装业务逻辑或数据,符合特定规范,具有getter和setter方法。在Java开发中,有时我们需要将XML数据转换为Java对象,反之亦然,这时XStream库就派上了用场。 XStream...

    xstream-1.3.1.zip

    引入这个库到你的项目中,就可以开始使用XStream进行JavaBean和XML的相互转化了。 使用XStream时,首先需要实例化XStream对象,然后通过`alias()`方法定义别名,以便简化XML中的元素名称。接着,调用`fromXML()`或`...

    JavaBean 转换为xml的三种方式比较

    在Java编程中,JavaBean是一种遵循特定规则的对象,通常用于数据封装和业务逻辑处理。将JavaBean转换为XML是常见的数据交换格式转换需求,特别是在Web服务、数据存储或配置文件中。本文将深入探讨三种将JavaBean转换...

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

    在标题和描述中提到的 "xstream-1.3.1.jar" 是 XStream 的一个版本,这个 JAR 文件包含了所有必要的类和资源,使得开发者能够在他们的应用程序中使用 XStream。 **XStream 库的核心功能:** 1. **序列化:**...

    xstream序列化与反序列化

    xstream中xml与javaBean的互转

    xml与JavaBean互相转换的好工具---Xstream

    xml与JavaBean互相转换的好工具---Xstream,能够很方便的实现xml与JavaBean之间的转换,这在系统之间进行信息交互是非常方便的

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

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

    xstream实现实体类序列化转xml

    xstream-1.4.2.jar,xpp3_min-1.1.4.jar,xmlpull-1.1.3.1.jar 包括 //XML --&gt; JavaBean, //XML --&gt; JavaBean //JavaBean --&gt; JSON,//JSON--&gt; JavaBean

    xml与javabean的相互转换

    除了JAXB,还可以使用DOM API手动解析XML并设置JavaBean的属性,或者使用第三方库如Apache的Digester或XStream等进行转换。 在实际应用中,我们还需要关注一些细节问题,比如XML命名空间(Namespace)的处理、XML...

    Javabean基于xstream包实现转XML文档的方法

    Javabean基于xstream包实现转XML文档的方法 Javabean是一种简单的Java类,用于封装数据,而xstream包是一个流行的XML序列化工具,通过使用xstream包,可以将Javabean对象转换为XML文档。下面将详细介绍Javabean基于...

    xstream.rar

    对于JavaBean到XML的转化,XStream 1.4.8提供了强大的类映射和自定义转换功能。 3. **XPP3库** xpp3-1.1.4c是XPP3库的一个版本,它是XML Pull解析器的实现。XPP3(XML Pull Processing)是一种轻量级的解析XML的...

    javaBean生成xml

    JavaBean生成XML是一种常见的数据序列...通过定义JavaBean,初始化XStream,配置别名,然后调用相应的转换方法,即可完成数据的序列化和反序列化过程。这个过程在处理跨平台数据交换、持久化存储或网络通信时非常有用。

Global site tag (gtag.js) - Google Analytics