亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

XStream小使用

系統(tǒng) 2514 0
XStream

目錄
1 XSTREAM框架 1
1.1 XSTREAM的作用 1
1.2 XSTREAM的說明 1
2 XSTREAM的使用 1
2.1 JAVABEAN轉(zhuǎn)換為XML 1
2.2 XML轉(zhuǎn)換為JAVABEAN 1
2.3 JAVABEAN轉(zhuǎn)化為JSON 1
2.4 JSON轉(zhuǎn)化為JAVABEAN 1

1 XStream框架
1.1 XStream的作用
XStream是一個開源項目,它可以實現(xiàn)javaBean和xml,json之間進行輕松的轉(zhuǎn)換。XStream支持將javaBean轉(zhuǎn)換為xml,同時也支持將xml轉(zhuǎn)換為javaBean,當然也可以將javaBean轉(zhuǎn)換問json,也可以將json轉(zhuǎn)換問javaBean。

1.2 XStream的說明
官網(wǎng):http://xstream.codehaus.org/index.html
下載地址:http://xstream.codehaus.org/download.html
官方使用示例:http://xstream.codehaus.org/tutorial.html
打開下載地址,XStream提供了src(源碼)和bin(二進制)包下載,如果想了解學習源代碼可以下載src,如果只想使用就下載bin。下面簡紹XStream的使用。

2 XStream的使用
下載XSteam的bin包,在java項目中加入下面包。



創(chuàng)建java項目,創(chuàng)建轉(zhuǎn)換模型User和Bbirthday類,創(chuàng)建一個TestUser來作為測試轉(zhuǎn)換類。
XStream的toXml()方法實現(xiàn)了javaBean到xml,json的轉(zhuǎn)化,fromXml()方法實現(xiàn)了xml,json到javaBean的轉(zhuǎn)換。
User類

    package com.model;

import com.thoughtworks.xstream.annotations.XStreamAlias;

/**
 * @author xmong
 */
//annotation注解別名,即xml中的user節(jié)點名稱
@XStreamAlias("user")
public class User {
	
	//姓名
	public String name;
	//生日
	public Birthday birthday;
	
	public User(){
		super();
	}
	
	public User(String name, Birthday birthday) {
		this.name = name;
		this.birthday = birthday;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Birthday getBirthday() {
		return birthday;
	}
	public void setBirthday(Birthday birthday) {
		this.birthday = birthday;
	}
		
	@Override
	public String toString() {
		return "{ name:"+this.name+"; birthday:"+this.birthday+"}";
	}

}

  

Birthday類

    package com.model;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;

//annotation注解別名,即xml中的user節(jié)點名稱
@XStreamAlias("birthday")
public class Birthday {
	
	//annotation注解屬性,即xml中節(jié)點屬性
	@XStreamAsAttribute
	int year;
	@XStreamAsAttribute
	int month;
	int day;
	
	public Birthday(){
		super();
	}
	
	public Birthday(int year, int month, int day) {
		this.year = year;
		this.month = month;
		this.day = day;
	}
	
	public int getYear() {
		return year;
	}
	public void setYear(int year) {
		this.year = year;
	}
	public int getMonth() {
		return month;
	}
	public void setMonth(int month) {
		this.month = month;
	}
	public int getDay() {
		return day;
	}
	public void setDay(int day) {
		this.day = day;
	}
	
	@Override
	public String toString() {
		return "{year:"+this.year+"; month"+this.month+"; day"+this.day+"}";
	}

}
  


2.1 JavaBean轉(zhuǎn)化為XML

TestUser類

    package com.model;

import com.thoughtworks.xstream.XStream;

/**
 * @author xmong
 */
public class TestUser {
	
	/**
	 * javaBean轉(zhuǎn)換為xml
	 */
	public void test1(){
		
		//創(chuàng)建user對象
		User user = new User();
		user.setName("xmong");
		user.setBirthday(new Birthday(1990, 10, 20));
		
		//創(chuàng)建xstream
		XStream xstream = new XStream();
		//XStream xstream = new XStream(new DomDriver());
		//XStream xstream = new XStream(new StaxDriver());

		//加載annotation注解
		xstream.processAnnotations(User.class);
		
		System.out.println(xstream.toXML(user));
		
	}

       public static void main(String[] args) {
		TestUser tu = new TestUser();
		tu.test1();
	}
	
}
  


輸出結果:
    <user>
  <name>xmong</name>
  <birthday year="1990" month="10">
    <day>20</day>
  </birthday>
</user>
  


如果使用
    XStream xstream = new XStream(new DomDriver())
  

創(chuàng)建XSteam對象那么輸出的結果同上。
如果使用
    XStream xstream = new XStream(new StaxDriver())
  

來創(chuàng)建XStream對象,輸出的結果:
    <?xml version="1.0" ?><user><name>xmong</name><birthday year="1990" month="10"><day>20</day></birthday></user>
  



2.2 XML轉(zhuǎn)化為JavaBean

在TestUser的main方法調(diào)用test2方法
    /**
	 * XML轉(zhuǎn)換為JavaBean
	 */
	public void test2(){
		
		//創(chuàng)建user對象
		User user = new User();
		user.setName("xmong");
		user.setBirthday(new Birthday(1990, 10, 20));
		
		//創(chuàng)建xstream
		XStream xstream = new XStream();
		//加載annotation注解
		xstream.processAnnotations(User.class);
		
		String xml = xstream.toXML(user);
		
		System.out.println(xml);
		
		System.out.println("===================");
		
		System.out.println((User)xstream.fromXML(xml));
		
	}

	public static void main(String[] args) {
		TestUser tu = new TestUser();
		tu.test2();
	}


  


輸出結果
    <user>
  <name>xmong</name>
  <birthday year="1990" month="10">
    <day>20</day>
  </birthday>
</user>
===================
{ name:xmong; birthday:{year:1990; month10; day20}}
  


2.3 JavaBean轉(zhuǎn)化為Json

    /**
	 * javaBean轉(zhuǎn)換為json
	 */
	public void test3(){
		
		//創(chuàng)建user對象
		User user = new User();
		user.setName("xmong");
		user.setBirthday(new Birthday(1990, 10, 20));
		
		//創(chuàng)建xstream,傳入轉(zhuǎn)換驅(qū)動類JettisonMappedXmlDriver
		XStream xstream = new XStream( new JettisonMappedXmlDriver());
		//設置user類的json別名
		xstream.alias("user", User.class);
		
		System.out.println(xstream.toXML(user));
		
	}


	public static void main(String[] args) {
		TestUser tu = new TestUser();
		tu.test3();
	}
  



輸出結果
    {"user":{"name":"xmong","birthday":{"year":1990,"month":10,"day":20}}}
  


    /**
	 * javaBean轉(zhuǎn)換為json
	 */
	public void test4(){
		
		//創(chuàng)建user對象
		User user = new User();
		user.setName("xmong");
		user.setBirthday(new Birthday(1990, 10, 20));
		
		//創(chuàng)建xstream,傳入轉(zhuǎn)換驅(qū)動類JsonHierarchicalStreamDriver
		XStream xstream = new XStream( new JsonHierarchicalStreamDriver());
		/*//去除根節(jié)點
		XStream xstream = new XStream(new JsonHierarchicalStreamDriver() {
		    public HierarchicalStreamWriter createWriter(Writer writer) {
		        return new JsonWriter(writer, JsonWriter.DROP_ROOT_MODE);
		    }
		});
		*/

		//設置user類的json別名
		xstream.alias("user", User.class);
		
		System.out.println(xstream.toXML(user));
		
	}

	public static void main(String[] args) {
		TestUser tu = new TestUser();
		tu.test4();
	}
  


輸出結果

    {"user": {
  "name": "xmong",
  "birthday": {
    "year": 1990,
    "month": 10,
    "day": 20
  }
}}
  

如果使用
    XStream xstream = new XStream(new JsonHierarchicalStreamDriver() {
		    public HierarchicalStreamWriter createWriter(Writer writer) {
		        return new JsonWriter(writer, JsonWriter.DROP_ROOT_MODE);
		    }
		});
  

創(chuàng)建XStream對象,那么java對象轉(zhuǎn)換成的json會去除根節(jié)點。
輸出結果
    {
  "name": "xmong",
  "birthday": {
    "year": 1990,
    "month": 10,
    "day": 20
  }
}
  



2.4 Json轉(zhuǎn)化為JavaBean

    /**
	 * json轉(zhuǎn)換為javaBean
	 */
	public void test5(){
		
		//創(chuàng)建user對象
		User user = new User();
		user.setName("xmong");
		user.setBirthday(new Birthday(1990, 10, 20));
		
		//創(chuàng)建xstream,傳入轉(zhuǎn)換驅(qū)動類JettisonMappedXmlDriver
		XStream xstream = new XStream( new JettisonMappedXmlDriver());
		//設置user類的json別名
		xstream.alias("user", User.class);
		
		String json = xstream.toXML(user);
		
		System.out.println(json);
		System.out.println("================");
		System.out.println(xstream.fromXML(json));
		
	}
	
	public static void main(String[] args) {
		TestUser tu = new TestUser();
		tu.test5();
	}
  


輸出結果
    {"user":{"name":"xmong","birthday":{"year":1990,"month":10,"day":20}}}
================
{ name:xmong; birthday:{year:1990; month10; day20}}
  





XStream小使用


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 简单视频在线播放jdav | 综合久久91 | 国产青青久久 | 久久狠狠 | 在线观看视频中文字幕 | 草莓视频在线观看精品最新 | 国内精品自在欧美一区 | 2022国产91精品久久久久久 | 天天色色色 | 欧美成人天天综合天天在线 | 日本一级特级毛片视频 | 亚洲天堂777| 国产欧美一区二区精品久久久 | 国产在线视频色综合 | 最新国产精品视频 | 欧美人成毛片在线播放 | 在线观看国产一区二区三区 | 精品伊人久久久 | 亚洲免费美女视频 | 国产成人夜色91 | 欧美成人在线免费观看 | 97理论片 | 精品老司机在线观看视频 | 国产亚洲午夜精品a一区二区 | 天天色天天射天天干 | 日本免费黄色小视频 | 91视频免费播放 | 日本一级淫一片免费 | 午夜视频在线观看国产www | 色综合久久久久综合体桃花网 | 久久一区二区精品综合 | 四虎免费永久网站入口 | 欧美一区二区在线观看 | 欧美在线观看第一页 | 亚洲精品免费日日日夜夜夜夜 | 青青久久久国产线免观 | 97狠狠操| 九九九国产视频 | 九九热亚洲精品综合视频 | 成人免费一区二区三区在线观看 | 热99精品只有里视频最新 |