創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!
創(chuàng)新互聯(lián)科技有限公司專業(yè)互聯(lián)網(wǎng)基礎(chǔ)服務(wù)商,為您提供樂(lè)山服務(wù)器托管,高防服務(wù)器租用,成都IDC機(jī)房托管,成都主機(jī)托管等互聯(lián)網(wǎng)服務(wù)。詳解XML,Object,Json轉(zhuǎn)換與Xstream的使用
1.Xstream的特點(diǎn):
這里直接引用Xstream官方的敘述:
2.初始化XStream類
說(shuō)Xstream簡(jiǎn)單是因?yàn)樗峁┙y(tǒng)一入口,主要類XStream用作所有項(xiàng)目的入口點(diǎn)。它將重要組件集成在一起,提供更簡(jiǎn)單易用的API操作。
我們可以使用以下的語(yǔ)句進(jìn)行初始化操作:
XStreamxstream = new XStream();
默認(rèn)情況下,XStream會(huì) 采用Xpp3庫(kù),XPP3是一種運(yùn)行效率非常高的XML全解析實(shí)現(xiàn)。如果你不想依靠Xpp3庫(kù)的話,也可以使用一個(gè)標(biāo)準(zhǔn)的JAXP DOM解析器,可以采用以下語(yǔ)句進(jìn)行初始化:
//不使用XPP3庫(kù)
XStreamxstream = new XStream(new DomDriver());
此xstream實(shí)例,為線程安全的,可以供多個(gè)線程進(jìn)行調(diào)用,共享使用。參考 com.thoughtworks.xstream.io.xml包,會(huì)發(fā)現(xiàn)系統(tǒng)提供了多種標(biāo)識(shí)解析器供我們選擇,包括,DomDriver、 JDomDriver、StaxDriver等等。
前面提到了Xstream提供了對(duì)Json的支持,是因?yàn)閄stream內(nèi)置了兩個(gè)Driver:
1.JsonHierarchicalStreamDriver:不依賴其他類庫(kù),只實(shí)現(xiàn) obj->JSON
2.JettisonMappedXmlDriver:依賴jettison類庫(kù),實(shí)現(xiàn) JSON->obj or obj->JSON
兩種Driver在處理相同設(shè)置的Object時(shí)會(huì)得到不同的JSON串,JsonHierarchicalStreamDriver得到的串更簡(jiǎn)潔,確如官網(wǎng)所說(shuō)。
JsonHierarchicalStreamDriver有個(gè)小問(wèn)題——默認(rèn)輸出帶格式的JSON串,結(jié)構(gòu)中帶空格、換行,并且沒(méi)有提供修飾方式。
3.常用方法:
xStream.toXML(object):將對(duì)象轉(zhuǎn)換成XML、Json。 xStream.toXML(obj, outputStream):將對(duì)象轉(zhuǎn)換XML、Json并封裝成輸出流。 xStream.toXML(object, writer): 將對(duì)象轉(zhuǎn)換XML、Json并封成寫入流。 xStream.fromXML():將XML、Json轉(zhuǎn)換成對(duì)象,此方法接受File、InputStream、Reader、String、URL類型的參數(shù)。 xStream.alias("news", News.class):為指定類名創(chuàng)建別名。 xStream.useAttributeFor(News.class, "id"):將id設(shè)為 News的元素的屬性。 xStream.aliasField("other", BookShelf.class,"remark"):修改節(jié)點(diǎn)名稱,將BookShelf類中的remark節(jié)點(diǎn)名修改為other。 xStream.addImplicitCollection(BookShelf.class, "books"):去掉集體節(jié)點(diǎn)的父節(jié)點(diǎn)。 xStream.aliasAttribute("姓名", "name"):修改屬性的name,為姓名。