`
lucky_god
  • 浏览: 37560 次
社区版块
存档分类
最新评论

java实现XML与Object互转---xstream

    博客分类:
  • java
阅读更多
实现XML与Object互转的工具有很多,这里使用的是xstream工具,需要xpp3.jar一起使用才可正常运行,本文用到的是xstream.1.4.jarxpp3-1.1.2.jar
进入正题
Object转XML:
创建web项目
新建bean类:CheckOut.java
package xmlParse;

import java.util.List;

import com.thoughtworks.xstream.annotations.XStreamAlias;

public class CheckOut {
	private String RoomNo;
	private String RoomTypeName;
	private String RoomBuildingName;
	private String RoomBuildingCode;
	private String RoomFloorName;
	private String RoomFloorCode;
	private String CheckInTime;
	private String CheckOutTime;
	private boolean CheckInRoom;
	private boolean CheckOutRoom;
	private List<GuestInfo> Guests;
	public String getRoomNo() {
		return RoomNo;
	}
	public void setRoomNo(String roomNo) {
		RoomNo = roomNo;
	}
	public String getRoomTypeName() {
		return RoomTypeName;
	}
	public void setRoomTypeName(String roomTypeName) {
		RoomTypeName = roomTypeName;
	}
	public String getRoomBuildingName() {
		return RoomBuildingName;
	}
	public void setRoomBuildingName(String roomBuildingName) {
		RoomBuildingName = roomBuildingName;
	}
	public String getRoomBuildingCode() {
		return RoomBuildingCode;
	}
	public void setRoomBuildingCode(String roomBuildingCode) {
		RoomBuildingCode = roomBuildingCode;
	}
	public String getRoomFloorName() {
		return RoomFloorName;
	}
	public void setRoomFloorName(String roomFloorName) {
		RoomFloorName = roomFloorName;
	}
	public String getRoomFloorCode() {
		return RoomFloorCode;
	}
	public void setRoomFloorCode(String roomFloorCode) {
		RoomFloorCode = roomFloorCode;
	}
	public String getCheckInTime() {
		return CheckInTime;
	}
	public void setCheckInTime(String checkInTime) {
		CheckInTime = checkInTime;
	}
	public String getCheckOutTime() {
		return CheckOutTime;
	}
	public void setCheckOutTime(String checkOutTime) {
		CheckOutTime = checkOutTime;
	}
	public boolean getCheckInRoom() {
		return CheckInRoom;
	}
	public void setCheckInRoom(boolean checkInRoom) {
		CheckInRoom = checkInRoom;
	}
	public List<GuestInfo> getGuests() {
		return Guests;
	}
	public void setGuests(List<GuestInfo> guests) {
		this.Guests = guests;
	}
	public boolean isCheckOutRoom() {
		return CheckOutRoom;
	}
	public void setCheckOutRoom(boolean checkOutRoom) {
		CheckOutRoom = checkOutRoom;
	}
	
	public CheckOut() {
		// TODO Auto-generated constructor stub
	}
	public CheckOut(String roomNo, String roomTypeName,
			String roomBuildingName, String roomBuildingCode,
			String roomFloorName, String roomFloorCode, String checkInTime,
			String checkOutTime, boolean checkInRoom, boolean checkOutRoom) {
		super();
		RoomNo = roomNo;
		RoomTypeName = roomTypeName;
		RoomBuildingName = roomBuildingName;
		RoomBuildingCode = roomBuildingCode;
		RoomFloorName = roomFloorName;
		RoomFloorCode = roomFloorCode;
		CheckInTime = checkInTime;
		CheckOutTime = checkOutTime;
		CheckInRoom = checkInRoom;
		CheckOutRoom = checkOutRoom;
	}
	
	
}



创建bean类GuestInfo.java
package xmlParse;

import com.thoughtworks.xstream.annotations.XStreamAlias;

@XStreamAlias("GuestInfo")
public class GuestInfo {
	public String GuestName;
	public String IDCardNo;
	public String IDCardTypeId;
	public String Nationality;
	public String CountryCode;
	public String Gender;
	public String Birthday;
	public String Address;
	public String CityCode;
	public String ProvinceCode;
	public String VisaNo;
	public String VisaTypeId;
	public String VisaValid;
	
	public String getGuestName() {
		return GuestName;
	}
	public void setGuestName(String guestName) {
		GuestName = guestName;
	}
	public String getIDCardNo() {
		return IDCardNo;
	}
	public void setIDCardNo(String iDCardNo) {
		IDCardNo = iDCardNo;
	}
	public String getIDCardTypeId() {
		return IDCardTypeId;
	}
	public void setIDCardTypeId(String iDCardTypeId) {
		IDCardTypeId = iDCardTypeId;
	}
	public String getNationality() {
		return Nationality;
	}
	public void setNationality(String nationality) {
		Nationality = nationality;
	}
	public String getGender() {
		return Gender;
	}
	public void setGender(String gender) {
		Gender = gender;
	}
	public String getBirthday() {
		return Birthday;
	}
	public void setBirthday(String birthday) {
		Birthday = birthday;
	}
	public String getAddress() {
		return Address;
	}
	public void setAddress(String address) {
		Address = address;
	}
	public String getCityCode() {
		return CityCode;
	}
	public void setCityCode(String cityCode) {
		CityCode = cityCode;
	}
	public String getProvinceCode() {
		return ProvinceCode;
	}
	public void setProvinceCode(String provinceCode) {
		ProvinceCode = provinceCode;
	}
	public String getCountryCode() {
		return CountryCode;
	}
	public void setCountryCode(String countryCode) {
		CountryCode = countryCode;
	}
	public String getVisaNo() {
		return VisaNo;
	}
	public void setVisaNo(String visaNo) {
		VisaNo = visaNo;
	}
	public String getVisaTypeId() {
		return VisaTypeId;
	}
	public void setVisaTypeId(String visaTypeId) {
		VisaTypeId = visaTypeId;
	}
	public String getVisaValid() {
		return VisaValid;
	}
	public void setVisaValid(String visaValid) {
		VisaValid = visaValid;
	}
	public GuestInfo(String guestName, String iDCardNo, String iDCardTypeId,
			String nationality, String countryCode, String gender,
			String birthday) {
		super();
		GuestName = guestName;
		IDCardNo = iDCardNo;
		IDCardTypeId = iDCardTypeId;
		Nationality = nationality;
		CountryCode = countryCode;
		Gender = gender;
		Birthday = birthday;
	}

	
}


现在创建测试类XStreamTest.java
import java.util.ArrayList;
import java.util.List;

import xmlParse.CheckOut;
import xmlParse.GuestInfo;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;


public class XStreamTest {

	public static void main(String[] args) {
		XStream xStream = new XStream(new DomDriver());
		CheckOut check = new CheckOut("1","12","13","14","15","16","17","18",true,false);
		List<GuestInfo> list = new ArrayList<GuestInfo>();
		for(int i =0; i < 2; i++){
			GuestInfo g = new GuestInfo("1", "2", "3", "4", "countryCode", "gender", "birthday");
			list.add(g);
		}
		check.setGuests(list);
		
		System.out.println(xStream.toXML(check));
	}

}


运行的结果为:
引用

<xmlParse.CheckOut>
  <RoomNo>1</RoomNo>
  <RoomTypeName>12</RoomTypeName>
  <RoomBuildingName>13</RoomBuildingName>
  <RoomBuildingCode>14</RoomBuildingCode>
  <RoomFloorName>15</RoomFloorName>
  <RoomFloorCode>16</RoomFloorCode>
  <CheckInTime>17</CheckInTime>
  <CheckOutTime>18</CheckOutTime>
  <CheckInRoom>true</CheckInRoom>
  <CheckOutRoom>false</CheckOutRoom>
  <Guests>
    <xmlParse.GuestInfo>
      <GuestName>1</GuestName>
      <IDCardNo>2</IDCardNo>
      <IDCardTypeId>3</IDCardTypeId>
      <Nationality>4</Nationality>
      <CountryCode>countryCode</CountryCode>
      <Gender>gender</Gender>
      <Birthday>birthday</Birthday>
    </xmlParse.GuestInfo>
    <xmlParse.GuestInfo>
      <GuestName>1</GuestName>
      <IDCardNo>2</IDCardNo>
      <IDCardTypeId>3</IDCardTypeId>
      <Nationality>4</Nationality>
      <CountryCode>countryCode</CountryCode>
      <Gender>gender</Gender>
      <Birthday>birthday</Birthday>
    </xmlParse.GuestInfo>
  </Guests>
</xmlParse.CheckOut>

这里解析出来GuestInfo和CheckOut类都是全路径名 , 如果你只想只保留类名,xstream提供了两种解决方式:
1、alias(name, class)方法
xStream.alias("CheckOut", CheckOut.class);
xStream.alias("GuestInfo", GuestInfo.class);
2、注解
类名前加上@XStreamAlias("your alias name")
package xmlParse;
import java.util.List;
import com.thoughtworks.xstream.annotations.XStreamAlias;
@XStreamAlias("CheckOut")
public class CheckOut {}

package xmlParse;
import com.thoughtworks.xstream.annotations.XStreamAlias;
@XStreamAlias("GuestInfo")
public class GuestInfo {}

并在xstream实例化对象处 xStream.autodetectAnnotations(true);即可;


XML转Object
这里弄不好就会转换出错,建议先把对象转换成xml , 看明白其格式再做xml转object

创建CheckOut.java 上面已创建,不做累述

创建GuestInfo.java 上面已创建,不做累述

编写XSreamTest.java测试类
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;

import xmlParse.CheckOut;
import xmlParse.GuestInfo;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;


public class XStreamTest {

	public static void main(String[] args) throws FileNotFoundException {
		XStream xStream = new XStream(new DomDriver());
		xStream.alias("CheckOut", CheckOut.class);
		xStream.alias("GuestInfo", GuestInfo.class);
		InputStream input = new FileInputStream(new File("C:/Users/lucky god/Desktop/CheckOut.xml"));
		CheckOut obj = (CheckOut)xStream.fromXML(input);
		System.out.println(obj.toString());
	}

}


附上CheckOut.xml的内容

<?xml version="1.0" encoding="UTF-8"?>
<CheckOut>
	<RoomNo/>
	<RoomTypeName/>
	<RoomBuildingName/>
	<RoomBuildingCode/>
	<RoomFloorName/>
	<RoomFloorCode/>
	<CheckInTime>2011-11-11 11:22:33</CheckInTime>
	<CheckOutTime>2011-11-11 11:22:33</CheckOutTime>
	<CheckOutRoom>true</CheckOutRoom>
	<Guests>
		<GuestInfo>
			<GuestName>1</GuestName>
			<IDCardNo>1</IDCardNo>
			<IDCardTypeId/>
			<Nationality/>
			<CountryCode/>
		</GuestInfo>
		<GuestInfo>
			<GuestName>2</GuestName>
			<IDCardNo>2</IDCardNo>
			<IDCardTypeId/>
			<Nationality/>
			<CountryCode/>
		</GuestInfo>
	</Guests>
</CheckOut>

分享到:
评论

相关推荐

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

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

    使用XStream是实现XML与Java对象的转换(5)--Object Stream

    标题中的“使用XStream是实现XML与Java对象的转换(5)--Object Stream”指的是一个关于XStream库在Java中如何将XML数据与Java对象进行互相转换的教程系列的第五部分,重点可能是关于“Object Stream”的内容。XStream...

    使用XStream是实现XML与Java对象的转换(6)--持久化

    这篇博客“使用XStream是实现XML与Java对象的转换(6)--持久化”深入探讨了如何利用XStream进行持久化操作,使得对象状态能够持久保存到磁盘,同时也能够从XML文档中恢复。 首先,我们需要理解XStream的核心概念。...

    使用XStream, java Object 与xml之间的转换,以及写入SD卡

    XStream是一款强大的库,它使得Java对象与XML之间的转换变得简单易行。本篇文章将深入探讨如何利用XStream进行Java对象到XML的转换,并将其存储到SD卡上。 首先,XStream的核心功能在于它可以将Java对象直接转换为...

    XStream实现Object与XML转换解决方案

    标题中的“XStream实现Object与XML转换解决方案”指的是一个Java库——XStream,它提供了一种简单的方法来序列化和反序列化Java对象到XML,反之亦然。这个库广泛用于将程序数据保存到XML文件或者从XML数据恢复对象,...

    XStream组件进行Object与XML互转用法

    3. **对象转XML** - 使用 `toXML()` 方法将 Java 对象转换为XML字符串。 ```java String xml = xStream.toXML(person); ``` ### 配置XStream - **别名(Aliases)** - 默认情况下,XStream 会使用类的全限定名...

    JAVA对象与XML互转

    本篇将详细探讨这个主题,讲解如何使用Java进行XML与对象的互转。 一、Java对象转XML 1. **JAXB**(Java Architecture for XML Binding):这是Java标准API,用于将Java对象映射到XML文档,反之亦然。使用JAXB,我们...

    xstream和betwixt对xml、object的互转

    这两个工具都提供了简单易用的API,帮助我们实现XML到对象(Object-to-XML)和对象到XML(XML-to-Object)的转换。 **XStream** XStream是Joe Walnes创建的一个开源库,它允许开发者以一种直观、简洁的方式在Java...

    使用XStream是实现XML与Java对象的转换(4)--转换器

    本篇文章将深入探讨如何使用XStream实现XML与Java对象的转换,并着重讲解转换器的概念。 XStream的核心功能在于它可以自动将Java对象转换成XML表示,反之亦然。这个过程是通过反射和元数据驱动的,使得开发人员无需...

    xstream-1.3.1.jar

    **XStream 概述** XStream 是一个强大的 Java 类库,它允许开发者将 Java 对象序列化为 XML 或...在实际开发中,结合 `xstream-1.3.1.jar` 文件,可以轻松地将 XStream 集成到项目中,实现对象与 XML 或 JSON 的互转。

    转载 xStream完美转换XML、JSON

    标题 "xStream完美转换XML、JSON" 指的是使用xStream库在Java中进行XML与JSON数据格式之间的转换。xStream是一个强大的库,它提供了一种简单的方式来序列化和反序列化Java对象到XML,反之亦然。在这个场景中,它同样...

    XStream和Xpp3实现对象到XML的互转参考文档

    XStream和Xpp3是两个常用的库,用于实现Java对象与XML之间的转换。本文档将详细介绍如何使用XStream和Xpp3进行对象到XML的转换,并解决可能出现的问题。 首先,要使用XStream和Xpp3,你需要引入相应的库文件。在本...

    xstream将xml文档转换成json对象

    XML(Extensible Markup Language)是一种结构化数据格式,广泛用于数据交换和配置文件,而JSON(JavaScript Object Notation)则因其简洁性和易读性,常用于前端与后端的数据交互。XStream是一个强大的Java库,它...

    xStream转换xml和json源码

    本篇文章将深入探讨xStream如何实现Java对象与XML和JSON的相互转换,并提供详细的代码示例。 ### 1. xStream的安装与引入 首先,你需要在项目中添加xStream的依赖。如果你使用的是Maven,可以在pom.xml文件中添加...

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

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

    java解析XML所需要的完整包(包括XStream.jar,dom4j.jar和xpull/xpp.jar)

    DOM4J是一个非常灵活的用于处理XML的Java库,它是基于DOM(Document Object Model)模型的,但提供了比标准DOM更多的功能。DOM4J提供了一种简单而高效的方式来创建、修改和查询XML文档。它支持XPath表达式,可以...

    微信开发用到的jar包:json 解析,dom4j-1.6.1.jar,xstream-1.3.1.jar

    `xstream-1.3.1.jar`是XStream的一个版本,支持将任何复杂的Java对象结构转换为同等的XML表示,同时也支持反向转换。在微信开发中,如果需要将Java对象转换为XML进行传输,或者从微信返回的XML数据中恢复对象状态,...

    详解XML,Object,Json转换与Xstream的使用

    6. **易于集成**:Xstream可以通过实现特定接口与其他树型结构的数据进行互转。 7. **灵活转换**:用户可以定制转换策略,自定义特殊类型对象的XML表示。 8. **错误处理**:当XML数据非法时,提供详细的诊断信息,...

    Java转换xml.rar

    在"Java转换xml.rar"中提到的"xstream-1.3"可能是指XStream库,这是一个强大的Java库,它使得对象到XML以及XML到对象的转换变得非常简单。XStream通过反射机制将Java对象直接序列化为XML,反之亦然。其优点在于它能...

Global site tag (gtag.js) - Google Analytics