導航:首頁 > 編程語言 > xstream轉java

xstream轉java

發布時間:2023-01-03 08:51:32

Ⅰ 用XStream 轉換java對象成xml的一個疑問

Ⅱ xstream xml轉化成java對象

xml to java對象:
static MessageDatabase load(String persistFile) {
MessageDatabase messageDatabase = null;
Reader reader = null;

try {
reader = new FileReader(persistFile);
XStream xstream = new XStream(new JDomDriver());
messageDatabase = (MessageDatabase) xstream.fromXML(reader);

// for upgrade
if (messageDatabase != null) {
messageDatabase.upgrade();
}
}
catch (FileNotFoundException ex) {
;
}
finally {
if (reader != null) {
try {
reader.close();
}
catch (IOException ex) {
log.warn("Exception when closing reader", ex);
}
}
}

if (messageDatabase == null) {
messageDatabase = new MessageDatabase();
messageDatabase.setMessages(new LinkedList());
messageDatabase.setStickyMessages(new LinkedList());
}

messageDatabase.persistFile = persistFile;

return messageDatabase;
}

Ⅲ 我現在使用xstream反序列化,把XML轉換為java對象

多餘的欄位如果是單個的話。你可以把它作為一個屬性啦?
然後<filed>作為一個集合..
addImplicitCollection(Class ownerType, String fieldName),去掉集合類型生成xml的父節點。

Ⅳ java用XStream把xml轉換成javabean的問題

xStream可以輕易的將Java對象和xml文檔相互轉換,而且可以修改某個特定的屬性和節點名稱,而且也支持json的轉換;它們都完美支持JSON,但是對xml的支持還不是很好。一定程度上限制了對Java對象的描述,不能讓xml完全體現到對Java對象的描述。這里將會介紹xStream對JSON、XML的完美支持。xStream不僅對XML的轉換非常友好,而且提供annotation註解,可以在JavaBean中完成對xml節點、屬性的描述。以及對JSON也支持,只需要提供相關的JSONDriver就可以完成轉換。

Ⅳ 如何創建xstream的註解工廠類,將xml轉換成java對象

本文記錄一下使用xstream這個api的註解特性對Java對象與XML字元串相互轉換的一些代碼示例。
我們很多人都處理過XML文件,也有很多非常成熟的第三方開源軟體。如:jdom、dom4j等。雖然他們的功能非常強大,但在使用上還是有點不那麼習慣。對於格式比較固定的XML文檔,它的結構沒有變化或是很少變化,這時將它轉換成我們熟悉的Java對象來操作的話,會使工作變得更容易一些,而xstream正好可以滿足這一點。
本文所用xstream的版本為:1.4.7

<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.7</version>
</dependency>
還是以之前的book XML為例,先上代碼。

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

@XStreamAlias("book")
public class Book {

// 別名註解,這個別名就是XML文檔中的元素名,Java的屬性名不一定要與別名一致
@XStreamAlias("name")
private String name;

@XStreamAlias("author")
private String author;

// 屬性註解,此price就是book的屬性,在XML中顯示為:<book price="108">
@XStreamAsAttribute()
@XStreamAlias("price")
private String price;

省略get和set方法
}

import java.util.List;

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

@XStreamAlias("books")
public class Books {

// 隱式集合,加上這個註解可以去掉book集合最外面的<list></list>這樣的標記
@XStreamImplicit
private List<Book> list;

省略get和set方法
}

Ⅵ xstream xml轉化成java對象

注意事項:

  1. 創建接收轉換的實體類 裡面欄位 與 xml節點一一對應。spring 使用@XStreamAlias("節點") 進行關聯。屬性名與節點一一對應是很重要的!!!不然 不能正常轉換。使用了註解以後,xml節點跟類的屬性名不再有關系,但是 註解裡面使用的名字就默認是與xml節點對應的。所以保持@XStreamAlias("節點") 裡面節點的值與xml 一一對應。

  2. xstream.processAnnotations(需要轉化的實體類.class);


實體類 例子:


package com.cmsz.cmup.alipay.model.responses;


import java.util.List;


import com.thoughtworks.xstream.annotations.XStreamAlias;

import com.thoughtworks.xstream.annotations.XStreamAsAttribute;

import com.thoughtworks.xstream.annotations.XStreamConverter;

import com.thoughtworks.xstream.annotations.XStreamImplicit;

import com.thoughtworks.xstream.converters.extended.ToAttributedValueConverter;


/**

* @Title: AccountResultVO.java

* @Package com.cmsz.cmup.alipay.vo.result

* @Description: alipay返回xml字元串封裝對象

* @author yekun

* @date 2015年12月4日 上午10:50:23

*/

@XStreamAlias("alipay")

public class AccountResponseModel {


/** 錯誤信息 */

@XStreamAlias("error")

private String error;


/** 請求是否成功 */

@XStreamAlias("is_success")

private String isSuccess;

/** 請求參數 */

@XStreamAlias("request")

private Request request;


/** xml節點 */

@XStreamAlias("response")

private Response response;


/** 簽名 */

@XStreamAlias("sign")

private String sign;


/** 簽名加密方式 */

@XStreamAlias("sign_type")

private String sign_type;



//轉換代碼

XStream xstream = new XStream(new DomDriver());

xstream.processAnnotations(實體類.class);

xstream.fromXML(xmlStr);//xml格式的字元串

Ⅶ xtream的工具使用

Xstream

需要的jar包

xpp3_min-1.1.4c.jar

xstream-1.3.1.jar

作用:

將xml字元串轉換為java對象,或者將java對象轉換為xml字元串

核心類:XStream xs = new XStream();

准備工作,先創建兩個java類:City和Province

@XStreamAlias("city")

public class City {

private String name;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

@XStreamAlias("province")

public class Province {

@XStreamAsAttribute()

private String name;

@XStreamImplicit(itemFieldName = "city")

private List citys;

public List getCitys() {

return citys;

}

public void setCitys(List citys) {

this.citys = citys;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

第一:將java類轉換為xml字元串

XStream xs = new XStream();

String xml = xs.toXML(JavaBean);

列印的字元串會將類的包名作為xml的標簽,以及裡面的欄位都會變成標簽。

例如將City類變為xml字元串:

武漢

將Province變成xml字元串

湖北

武漢

所以為了能將列印的字元串變為我們所想要的格式,可以使用Xstream提供的註解進行格式化輸出

提供便捷註解

@XStreamAlias(別名) 對類和變數設置別名

@XStreamAsAttribute  設置變數生成屬性

@XStreamOmitField  設置變數 不生成到XML

@XStreamImplicit(itemFieldName = 「hobbies」) 設置集合類型變數 別名

使註解生效

xStream.autodetectAnnotations(true);

第二:將xml字元串變為java對象

Object xs.fromXML(InputStream input);  //將一個下買了指定的流變為java對象

Object xs.fromXML(String xml)  //將xml字元串變為java對象

Object xs.fromXML(InputStream input,Object root)  ?

Object xs.fromXML(String xml,Object root)  ?

注意:轉換的xml文檔必須與Java對象  的格式對應

例如:將下面xml字元串轉換為Java對象

武漢

則進行轉換時候:

XStream xs = new XStream();

Object o = xs.fromXML(in);

若對應的java格式一定是:

包名為:com.domain

類名為:City

裡面有一個成員屬性:name  提供setter/getter方法

若不是則可以使用別名:

a.為類設置別名

xs.alias("city", City.class);

b.為屬性添加別名

xstream.useAttributeFor(Blog.class,"author");

能不能通過註解將 xml轉換為制定的java對象  ?

能,手動用方法添加別名

   

Ⅷ 用XStream進行xml轉java對象的問題

XStream xStream = new XStream();
xStream.aliasType("LoginRsp", LoginRsp.class);

Object o = xStream.fromXML(ClassLoader.getSystemResourceAsStream("xxx.xml"));
System.out.println(o);

Ⅸ xStream轉換xml同名節點到java對象問題

假設XML文件(config/0_student.xml)內容如下:

<students>
<student>
<name>zhang3</name>
<age>20</age>
</student>
<student>
<name>li4</name>
<age>21</age>
</student>
</students>


XStream轉換代碼如下:

{

publicvoidtestToObject()throwsException{
XStreamxstream=newXStream(newDomDriver());
Filefile=newFile(XStreamUtil.class.getClassLoader().getResource("").getPath(),"config/0_student.xml");
xstream.alias("students",List.class);
xstream.alias("student",Student.class);
List<Student>students=(List<Student>)xstream.fromXML(newFileInputStream(file));

assertEquals(2,students.size());
assertEquals("zhang3",students.get(0).getName());
assertEquals("li4",students.get(1).getName());
assertEquals(20,students.get(0).getAge());
assertEquals(21,students.get(1).getAge());
}
}
閱讀全文

與xstream轉java相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:756
蘋果郵件無法連接伺服器地址 瀏覽:962
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:142
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:732
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:301
PDF分析 瀏覽:484
h3c光纖全工半全工設置命令 瀏覽:141
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:890
app轉賬是什麼 瀏覽:163