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();
Java代碼 ?
2.創建要轉換的實例類,本文以簡單的硬件信息為例
Java代碼 ?
3.新建測試代碼
Java代碼 ?
輸出如下:
Java代碼 ?
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();
總結
- 上一篇: 信用卡销户5年征信还没消除 注销时不能
- 下一篇: 02_Weblogic课程之安装篇:Re