日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

java 转xml 变成两根下划线_XStream实现xml和java对象之间的互相转换(包括对属性,别名,下划线_的处理),同理JSON也可以...

發(fā)布時(shí)間:2024/9/19 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 转xml 变成两根下划线_XStream实现xml和java对象之间的互相转换(包括对属性,别名,下划线_的处理),同理JSON也可以... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

首先去官網(wǎng)下載響應(yīng)JAR包

最少需要兩個(gè)jar包,一個(gè)xstream.jar,一個(gè)是xmlpull.jar

首先來看下java對象到xml的轉(zhuǎn)換

package xml;

class PhoneNumber {

private int code;

private int number;

public int getCode() {

return code;

}

public void setCode(int code) {

this.code = code;

}

public int getNumber() {

return number;

}

public void setNumber(int number) {

this.number = number;

}

}

public class Person {

private String username;

private int age;

private PhoneNumber pn;

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public PhoneNumber getPn() {

return pn;

}

public void setPn(PhoneNumber pn) {

this.pn = pn;

}

}

以上是一個(gè)普通的java對象

package xml;

import com.thoughtworks.xstream.XStream;

import com.thoughtworks.xstream.io.xml.StaxDriver;

public class XmlUtils {

private static XStream xs = new XStream(new StaxDriver());

public static String objToXml(Object obj) {

//xs.aliasPackage(name,pkgName);

return xs.toXML(obj);

}

public static void main(String[] args) {

Person p = new Person();

p.setAge(26);

p.setUsername("chiwei");

PhoneNumber pn = new PhoneNumber();

pn.setCode(188);

pn.setNumber(67101080);

p.setPn(pn);

xs.alias("person",Person.class);

String xml = objToXml(p);

Person per = (Person)xs.fromXML(xml);

System.out.println(xml);

System.out.println(per.getUsername());

}

}

以上代碼,先是生成一個(gè)對象,給各個(gè)屬性賦值,然后調(diào)用toXML將對象轉(zhuǎn)換為xml格式的普通文本,注意在轉(zhuǎn)換前調(diào)用了alias目的是為了將xml.Person重命名為person

<?xml version="1.0" ?>chiwei2618867101080

這里xstream實(shí)例化時(shí)候傳入了StaxDriver表示A driver using the StAX API to create XML reader and writer.

如果你使用xpp3driver,你需要引入該jar包

后面則根據(jù)上面轉(zhuǎn)換后的xml繼續(xù)轉(zhuǎn)換成相應(yīng)的對象Person

<?xml version="1.0" ?>chiwei2618867101080

chiwei

很簡單

xs.alias("person",Person.class);

xs.useAttributeFor(Person.class,"username");

xs.aliasAttribute(Person.class,"username","name");這種情況是將屬性寫到XML元素的里面作為屬性,而不是單獨(dú)作為一個(gè)子元素,如下所示:

26

-------------------------------------------------------------------------------華麗的分割線-------------------------------------------------------------------------------------------

以上的例子的確很簡單,下面看看一些別的處理

xs.aliasField("res_type",SLIR.class,"resType");該方法是用于將SLIR類中的resType屬性在XML元素中顯示為res_type,這里看到有一個(gè)下劃線_,其實(shí)在xstream實(shí)例化的時(shí)候,如果沒有用到XmlFriendlyNameCoder的話,可能下劃線_就會(huì)變成__,因?yàn)樵谶@里_其實(shí)是轉(zhuǎn)移符,所以我們實(shí)例化xstream的時(shí)候應(yīng)該如下:

private static XStream xs = new XStream(new DomDriver(null,new XmlFriendlyNameCoder("_-","_")));

xs.useAttributeFor(RequestMode.class,"type");該方法的目的是將RequestMode類中的type屬性作為該XML元素的內(nèi)部屬性

最后再來看下,XML元素同時(shí)又屬性和值得時(shí)候怎么處理

13505602768如上所示,msid元素?fù)碛袃蓚€(gè)屬性,同時(shí)又擁有自己的值,這時(shí)候,在做轉(zhuǎn)化的時(shí)候,必須自定義轉(zhuǎn)換器converter才行

import com.thoughtworks.xstream.converters.Converter;

import com.thoughtworks.xstream.converters.MarshallingContext;

import com.thoughtworks.xstream.converters.UnmarshallingContext;

import com.thoughtworks.xstream.io.HierarchicalStreamReader;

import com.thoughtworks.xstream.io.HierarchicalStreamWriter;

public class ReqMsidConverter implements Converter {

@SuppressWarnings("rawtypes")

@Override

public boolean canConvert(Class type) {

// TODO Auto-generated method stub

return type.equals(Msid.class);

}

@Override

public void marshal(Object source,HierarchicalStreamWriter writer,MarshallingContext context) {

// TODO Auto-generated method stub

Msid msid = (Msid)source;

writer.addAttribute("enc",msid.getEnc());

writer.addAttribute("type",msid.getType());

writer.setValue(msid.getMsid());

}

@Override

public Object unmarshal(HierarchicalStreamReader reader,UnmarshallingContext context) {

// TODO Auto-generated method stub\

Msid msid = new Msid();

msid.setEnc(reader.getAttribute("enc"));

msid.setType(reader.getAttribute("type"));

msid.setMsid(reader.getValue());

return msid;

}

}定義完該轉(zhuǎn)換器后,將其注冊到xstream上即可

xs.registerConverter(new ReqMsidConverter());

總結(jié)

如果覺得編程之家網(wǎng)站內(nèi)容還不錯(cuò),歡迎將編程之家網(wǎng)站推薦給程序員好友。

本圖文內(nèi)容來源于網(wǎng)友網(wǎng)絡(luò)收集整理提供,作為學(xué)習(xí)參考使用,版權(quán)屬于原作者。

如您喜歡交流學(xué)習(xí)經(jīng)驗(yàn),點(diǎn)擊鏈接加入交流1群:1065694478(已滿)交流2群:163560250

總結(jié)

以上是生活随笔為你收集整理的java 转xml 变成两根下划线_XStream实现xml和java对象之间的互相转换(包括对属性,别名,下划线_的处理),同理JSON也可以...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲精品91在线 | 荷兰av| 欲色网站| 爆操女秘书 | 精品视频一区二区三区四区五区 | 亚洲h| 免费黄色高清视频 | 校园sm主奴调教1v1罚视频 | 爱情岛亚洲首页论坛小巨 | 99热免费观看 | 999毛片| 国内精品视频一区 | 新91视频在线观看 | 伊人伊人| 精品国产一二三区 | 极品少妇在线观看 | 国产精品免费av一区二区三区 | www.欧美国产 | 91社区福利 | 中文字幕一区二区三 | 亚洲v日本 | 麻豆69| 特级西西444www大精品视频 | av狠狠操| 91免费网站在线观看 | 欧美三级手机在线观看 | 亚洲国产网站 | www天天操 | 丰满岳跪趴高撅肥臀尤物在线观看 | 91免费观看网站 | 色资源网站 | 免费a级片在线观看 | 思思久久久 | 中文精品无码中文字幕无码专区 | 中国白嫩丰满人妻videos | 久久鲁鲁 | 伊久久| 爱情岛论语亚洲入口 | 老熟女高潮喷水了 | 国产偷国产偷av亚洲清高 | 国产一区精品在线观看 | 97成人在线 | www.色播| 久久靖品 | 精品一区二区三区av | 欧美经典一区二区三区 | 神马影院一区二区 | 成人黄色性视频 | 日韩视频中文 | 亚洲精品黄色 | 日本精品国产 | 99久久精品国产成人一区二区 | 国产精品永久在线观看 | 性生交生活片1 | 国产精品久久久久不卡 | 在线观看国产三级 | 日韩 欧美 国产 综合 | 日本一区不卡视频 | 欧美亚洲视频一区 | 欧美wwwxxxx| 高清av网站 | 波多野结衣在线观看一区二区三区 | 黑人av| 在线观看中文字幕一区二区 | 密桃成熟时在线观看 | 成人xxxxx| 日本熟妇成熟毛茸茸 | 黄色一区二区视频 | 北条麻妃久久 | 青青视频免费 | 亚洲第一中文字幕 | 无码人妻久久一区二区三区蜜桃 | 久久久久无码国产精品一区李宗瑞 | 亚洲一区二区麻豆 | 艳妇乳肉豪妇荡乳av无码福利 | 日韩精品在线免费观看视频 | 日本久久高清视频 | www.x日本 | 中文字幕日韩无 | 国产精品国语自产拍在线观看 | 中文天堂在线观看 | 久草这里只有精品 | 蜜桃在线一区二区三区 | 国产又粗又黄又爽又硬的视频 | 黄色岛国片| 欧美日韩色图 | 就是喜欢被他干 | 国产在线小视频 | 国产精品一品二区三区的使用体验 | 狠狠操天天操 | 色噜噜影院 | 18禁裸男晨勃露j毛免费观看 | 日韩视频免费观看高清完整版 | 亚洲我射 | 日韩av在线影院 | 欧美 日韩 视频 | 日韩视频免费播放 | 欧美亚洲丝袜 | 性色av蜜臀av浪潮av老女人 |