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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

XStream

發布時間:2024/9/27 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XStream 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
 1.引入需要的jar包,在pom.xml中配置依賴
Java代碼 ?
  • <dependency>??
  • ????<groupId>com.thoughtworks.xstream</groupId>??
  • ????<artifactId>xstream</artifactId>??
  • ????<version>1.4.2</version>??
  • </dependency>??
  • <dependency><groupId>com.thoughtworks.xstream</groupId><artifactId>xstream</artifactId><version>1.4.2</version> </dependency>
    2.創建要轉換的實例類,本文以簡單的硬件信息為例
    Java代碼 ?
  • package?com.ajita.xstream;??
  • ??
  • import?com.thoughtworks.xstream.annotations.XStreamAlias;??
  • import?com.thoughtworks.xstream.annotations.XStreamAsAttribute;??
  • ??
  • @XStreamAlias("DiskInfo")??
  • public?class?DiskInfo?{??
  • ????@XStreamAsAttribute??
  • ????@XStreamAlias("diskName")??
  • ????private?String?name;??
  • ????private?int?totalSize;??
  • ????private?int?avilableSize;??
  • ????private?int?usedSize;??
  • ??
  • ????public?String?getName()?{??
  • ????????return?name;??
  • ????}??
  • ??
  • ????public?void?setName(String?name)?{??
  • ????????this.name?=?name;??
  • ????}??
  • ??
  • ????public?int?getTotleSize()?{??
  • ????????return?totalSize;??
  • ????}??
  • ??
  • ????public?void?setTotleSize(int?totleSize)?{??
  • ????????this.totalSize?=?totleSize;??
  • ????}??
  • ??
  • ????public?int?getAvilableSize()?{??
  • ????????return?avilableSize;??
  • ????}??
  • ??
  • ????public?void?setAvilableSize(int?avilableSize)?{??
  • ????????this.avilableSize?=?avilableSize;??
  • ????}??
  • ??
  • ????public?int?getUserSize()?{??
  • ????????return?usedSize;??
  • ????}??
  • ??
  • ????public?void?setUserSize(int?userSize)?{??
  • ????????this.usedSize?=?userSize;??
  • ????}??
  • ??
  • ????public?String?toString()?{??
  • ????????StringBuilder?sb?=?new?StringBuilder();??
  • ????????sb.append(name?+?"\r\n");??
  • ????????sb.append("TotalSize:"?+?totalSize?+?"|Used?Size:"?+?usedSize??
  • ????????????????+?"|Available?Size:"?+?avilableSize);??
  • ????????return?sb.toString();??
  • ????}??
  • }??
  • ??
  • package?com.ajita.xstream;??
  • ??
  • import?java.util.List;??
  • ??
  • import?com.thoughtworks.xstream.annotations.XStreamAlias;??
  • ??
  • @XStreamAlias("HardwareInfo")??
  • public?class?HardwareInfo?{??
  • ????private?String?cpuInfo;??
  • ????private?String?networkInfo;??
  • ????private?List<DiskInfo>?diskInfos;??
  • ??
  • ????public?String?getCpuInfo()?{??
  • ????????return?cpuInfo;??
  • ????}??
  • ??
  • ????public?void?setCpuInfo(String?cpuInfo)?{??
  • ????????this.cpuInfo?=?cpuInfo;??
  • ????}??
  • ??
  • ????public?String?getNetworkInfo()?{??
  • ????????return?networkInfo;??
  • ????}??
  • ??
  • ????public?void?setNetworkInfo(String?networkInfo)?{??
  • ????????this.networkInfo?=?networkInfo;??
  • ????}??
  • ??
  • ????public?List<DiskInfo>?getDiskInfos()?{??
  • ????????return?diskInfos;??
  • ????}??
  • ??
  • ????public?void?setDiskInfos(List<DiskInfo>?diskInfos)?{??
  • ????????this.diskInfos?=?diskInfos;??
  • ????}??
  • ??
  • ????public?String?toString()?{??
  • ????????StringBuilder?sb?=?new?StringBuilder();??
  • ????????sb.append(cpuInfo);??
  • ????????sb.append("\r\n");??
  • ????????sb.append(networkInfo);??
  • ????????sb.append("\r\n");??
  • ????????for?(DiskInfo?disk?:?diskInfos)?{??
  • ????????????sb.append(disk.toString());??
  • ????????????sb.append("\r\n");??
  • ????????}??
  • ????????return?sb.toString();??
  • ????}??
  • }??
  • package com.ajita.xstream;import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute;@XStreamAlias("DiskInfo") public class DiskInfo {@XStreamAsAttribute@XStreamAlias("diskName")private String name;private int totalSize;private int avilableSize;private int usedSize;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getTotleSize() {return totalSize;}public void setTotleSize(int totleSize) {this.totalSize = totleSize;}public int getAvilableSize() {return avilableSize;}public void setAvilableSize(int avilableSize) {this.avilableSize = avilableSize;}public int getUserSize() {return usedSize;}public void setUserSize(int userSize) {this.usedSize = userSize;}public String toString() {StringBuilder sb = new StringBuilder();sb.append(name + "\r\n");sb.append("TotalSize:" + totalSize + "|Used Size:" + usedSize+ "|Available Size:" + avilableSize);return sb.toString();} }package com.ajita.xstream;import java.util.List;import com.thoughtworks.xstream.annotations.XStreamAlias;@XStreamAlias("HardwareInfo") public class HardwareInfo {private String cpuInfo;private String networkInfo;private List<DiskInfo> diskInfos;public String getCpuInfo() {return cpuInfo;}public void setCpuInfo(String cpuInfo) {this.cpuInfo = cpuInfo;}public String getNetworkInfo() {return networkInfo;}public void setNetworkInfo(String networkInfo) {this.networkInfo = networkInfo;}public List<DiskInfo> getDiskInfos() {return diskInfos;}public void setDiskInfos(List<DiskInfo> diskInfos) {this.diskInfos = diskInfos;}public String toString() {StringBuilder sb = new StringBuilder();sb.append(cpuInfo);sb.append("\r\n");sb.append(networkInfo);sb.append("\r\n");for (DiskInfo disk : diskInfos) {sb.append(disk.toString());sb.append("\r\n");}return sb.toString();} }
    3.新建測試代碼
    Java代碼 ?
  • package?com.ajita.xstream;??
  • ??
  • import?java.util.ArrayList;??
  • ??
  • import?com.thoughtworks.xstream.XStream;??
  • ??
  • public?class?TestXStream?{??
  • ????/**?
  • ?????*?@param?args?
  • ?????*/??
  • ????public?static?void?main(String[]?args)?{??
  • ????????DiskInfo?disk1?=?new?DiskInfo();??
  • ????????disk1.setName("D:\\");??
  • ????????disk1.setTotleSize(100);??
  • ????????disk1.setUserSize(20);??
  • ????????disk1.setAvilableSize(80);??
  • ????????DiskInfo?disk2?=?new?DiskInfo();??
  • ????????disk2.setName("E:\\");??
  • ????????disk2.setTotleSize(200);??
  • ????????disk2.setUserSize(40);??
  • ????????disk2.setAvilableSize(160);??
  • ??
  • ????????ArrayList<DiskInfo>?diskInfos?=?new?ArrayList<DiskInfo>();??
  • ????????diskInfos.add(disk1);??
  • ????????diskInfos.add(disk2);??
  • ??
  • ????????HardwareInfo?hwInfo?=?new?HardwareInfo();??
  • ????????hwInfo.setCpuInfo("cpu?info?is?...");??
  • ????????hwInfo.setNetworkInfo("network?info?is?...");??
  • ????????hwInfo.setDiskInfos(diskInfos);??
  • ??
  • ????????XStream?xStream?=?new?XStream();??
  • ????????xStream.autodetectAnnotations(true);??
  • ????????String?xml?=?xStream.toXML(hwInfo);??
  • ????????System.out.println(xml);??
  • ??
  • ????????HardwareInfo?info2?=?(HardwareInfo)?xStream.fromXML(xml);??
  • ????????System.out.println(info2);??
  • ????}??
  • ??
  • }??
  • package com.ajita.xstream;import java.util.ArrayList;import com.thoughtworks.xstream.XStream;public class TestXStream {/*** @param args*/public static void main(String[] args) {DiskInfo disk1 = new DiskInfo();disk1.setName("D:\\");disk1.setTotleSize(100);disk1.setUserSize(20);disk1.setAvilableSize(80);DiskInfo disk2 = new DiskInfo();disk2.setName("E:\\");disk2.setTotleSize(200);disk2.setUserSize(40);disk2.setAvilableSize(160);ArrayList<DiskInfo> diskInfos = new ArrayList<DiskInfo>();diskInfos.add(disk1);diskInfos.add(disk2);HardwareInfo hwInfo = new HardwareInfo();hwInfo.setCpuInfo("cpu info is ...");hwInfo.setNetworkInfo("network info is ...");hwInfo.setDiskInfos(diskInfos);XStream xStream = new XStream();xStream.autodetectAnnotations(true);String xml = xStream.toXML(hwInfo);System.out.println(xml);HardwareInfo info2 = (HardwareInfo) xStream.fromXML(xml);System.out.println(info2);}}
    輸出如下:
    Java代碼 ?
  • <HardwareInfo>??
  • ??<cpuInfo>cpu?info?is?...</cpuInfo>??
  • ??<networkInfo>network?info?is?...</networkInfo>??
  • ??<diskInfos>??
  • ????<DiskInfo?diskName="D:\">??
  • ??????<totalSize>100</totalSize>??
  • ??????<avilableSize>80</avilableSize>??
  • ??????<usedSize>20</usedSize>??
  • ????</DiskInfo>??
  • ????<DiskInfo?diskName="E:\">??
  • ??????<totalSize>200</totalSize>??
  • ??????<avilableSize>160</avilableSize>??
  • ??????<usedSize>40</usedSize>??
  • ????</DiskInfo>??
  • ??</diskInfos>??
  • </HardwareInfo>??
  • cpu?info?is?...??
  • network?info?is?...??
  • D:\??
  • TotalSize:100|Used?Size:20|Available?Size:80??
  • E:\??
  • TotalSize:200|Used?Size:40|Available?Size:160??
  • <HardwareInfo><cpuInfo>cpu info is ...</cpuInfo><networkInfo>network info is ...</networkInfo><diskInfos><DiskInfo diskName="D:\"><totalSize>100</totalSize><avilableSize>80</avilableSize><usedSize>20</usedSize></DiskInfo><DiskInfo diskName="E:\"><totalSize>200</totalSize><avilableSize>160</avilableSize><usedSize>40</usedSize></DiskInfo></diskInfos> </HardwareInfo> cpu info is ... network info is ... D:\ TotalSize:100|Used Size:20|Available Size:80 E:\ TotalSize:200|Used Size:40|Available Size:160

    4.常用XStream注解
    1)@XStreamAlias注解可在類與屬性上使用設置名稱,相當于: xstream.alias("blog", Blog.class);
    2)@XStreamImplicit去集合節點名:相當于 xstream.addImplicitCollection(Blog.class, "entries");
    3) @XStreamConverter(SingleValueCalendarConverter.class)
    ??? private Calendar createdTime = new GregorianCalendar();

    總結

    以上是生活随笔為你收集整理的XStream的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。