zoukankan      html  css  js  c++  java
  • XStream转换Java对象与XML

    1.引入需要的jar包,在pom.xml中配置依赖 

    Java代码  收藏代码
    1. <dependency>  
    2.     <groupId>com.thoughtworks.xstream</groupId>  
    3.     <artifactId>xstream</artifactId>  
    4.     <version>1.4.2</version>  
    5. </dependency>  


    2.创建要转换的实例类,本文以简单的硬件信息为例 

    Java代码  收藏代码
    1. package com.ajita.xstream;  
    2.   
    3. import com.thoughtworks.xstream.annotations.XStreamAlias;  
    4. import com.thoughtworks.xstream.annotations.XStreamAsAttribute;  
    5.   
    6. @XStreamAlias("DiskInfo")  
    7. public class DiskInfo {  
    8.     @XStreamAsAttribute  
    9.     @XStreamAlias("diskName")  
    10.     private String name;  
    11.     private int totalSize;  
    12.     private int avilableSize;  
    13.     private int usedSize;  
    14.   
    15.     public String getName() {  
    16.         return name;  
    17.     }  
    18.   
    19.     public void setName(String name) {  
    20.         this.name = name;  
    21.     }  
    22.   
    23.     public int getTotleSize() {  
    24.         return totalSize;  
    25.     }  
    26.   
    27.     public void setTotleSize(int totleSize) {  
    28.         this.totalSize = totleSize;  
    29.     }  
    30.   
    31.     public int getAvilableSize() {  
    32.         return avilableSize;  
    33.     }  
    34.   
    35.     public void setAvilableSize(int avilableSize) {  
    36.         this.avilableSize = avilableSize;  
    37.     }  
    38.   
    39.     public int getUserSize() {  
    40.         return usedSize;  
    41.     }  
    42.   
    43.     public void setUserSize(int userSize) {  
    44.         this.usedSize = userSize;  
    45.     }  
    46.   
    47.     public String toString() {  
    48.         StringBuilder sb = new StringBuilder();  
    49.         sb.append(name + " ");  
    50.         sb.append("TotalSize:" + totalSize + "|Used Size:" + usedSize  
    51.                 + "|Available Size:" + avilableSize);  
    52.         return sb.toString();  
    53.     }  
    54. }  
    55.   
    56. package com.ajita.xstream;  
    57.   
    58. import java.util.List;  
    59.   
    60. import com.thoughtworks.xstream.annotations.XStreamAlias;  
    61.   
    62. @XStreamAlias("HardwareInfo")  
    63. public class HardwareInfo {  
    64.     private String cpuInfo;  
    65.     private String networkInfo;  
    66.     private List<DiskInfo> diskInfos;  
    67.   
    68.     public String getCpuInfo() {  
    69.         return cpuInfo;  
    70.     }  
    71.   
    72.     public void setCpuInfo(String cpuInfo) {  
    73.         this.cpuInfo = cpuInfo;  
    74.     }  
    75.   
    76.     public String getNetworkInfo() {  
    77.         return networkInfo;  
    78.     }  
    79.   
    80.     public void setNetworkInfo(String networkInfo) {  
    81.         this.networkInfo = networkInfo;  
    82.     }  
    83.   
    84.     public List<DiskInfo> getDiskInfos() {  
    85.         return diskInfos;  
    86.     }  
    87.   
    88.     public void setDiskInfos(List<DiskInfo> diskInfos) {  
    89.         this.diskInfos = diskInfos;  
    90.     }  
    91.   
    92.     public String toString() {  
    93.         StringBuilder sb = new StringBuilder();  
    94.         sb.append(cpuInfo);  
    95.         sb.append(" ");  
    96.         sb.append(networkInfo);  
    97.         sb.append(" ");  
    98.         for (DiskInfo disk : diskInfos) {  
    99.             sb.append(disk.toString());  
    100.             sb.append(" ");  
    101.         }  
    102.         return sb.toString();  
    103.     }  
    104. }  


    3.新建测试代码 

    Java代码  收藏代码
    1. package com.ajita.xstream;  
    2.   
    3. import java.util.ArrayList;  
    4.   
    5. import com.thoughtworks.xstream.XStream;  
    6.   
    7. public class TestXStream {  
    8.     /** 
    9.      * @param args 
    10.      */  
    11.     public static void main(String[] args) {  
    12.         DiskInfo disk1 = new DiskInfo();  
    13.         disk1.setName("D:\");  
    14.         disk1.setTotleSize(100);  
    15.         disk1.setUserSize(20);  
    16.         disk1.setAvilableSize(80);  
    17.         DiskInfo disk2 = new DiskInfo();  
    18.         disk2.setName("E:\");  
    19.         disk2.setTotleSize(200);  
    20.         disk2.setUserSize(40);  
    21.         disk2.setAvilableSize(160);  
    22.   
    23.         ArrayList<DiskInfo> diskInfos = new ArrayList<DiskInfo>();  
    24.         diskInfos.add(disk1);  
    25.         diskInfos.add(disk2);  
    26.   
    27.         HardwareInfo hwInfo = new HardwareInfo();  
    28.         hwInfo.setCpuInfo("cpu info is ...");  
    29.         hwInfo.setNetworkInfo("network info is ...");  
    30.         hwInfo.setDiskInfos(diskInfos);  
    31.   
    32.         XStream xStream = new XStream();  
    33.         xStream.autodetectAnnotations(true);  
    34.         String xml = xStream.toXML(hwInfo);  
    35.         System.out.println(xml);  
    36.   
    37.         HardwareInfo info2 = (HardwareInfo) xStream.fromXML(xml);  
    38.         System.out.println(info2);  
    39.     }  
    40.   
    41. }  


    输出如下: 

    Java代码  收藏代码
    1. <HardwareInfo>  
    2.   <cpuInfo>cpu info is ...</cpuInfo>  
    3.   <networkInfo>network info is ...</networkInfo>  
    4.   <diskInfos>  
    5.     <DiskInfo diskName="D:">  
    6.       <totalSize>100</totalSize>  
    7.       <avilableSize>80</avilableSize>  
    8.       <usedSize>20</usedSize>  
    9.     </DiskInfo>  
    10.     <DiskInfo diskName="E:">  
    11.       <totalSize>200</totalSize>  
    12.       <avilableSize>160</avilableSize>  
    13.       <usedSize>40</usedSize>  
    14.     </DiskInfo>  
    15.   </diskInfos>  
    16. </HardwareInfo>  
    17. cpu info is ...  
    18. network info is ...  
    19. D:  
    20. TotalSize:100|Used Size:20|Available Size:80  
    21. E:  
    22. 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();

  • 相关阅读:
    vmware ubuntu 异常关机无法连接到网络
    Speed up GCC link
    常用的一些解压命令
    Log4j 漏洞复现
    Test Case Design method Boundary value analysis and Equivalence partitioning
    CCA (Citrix Certified Administrator) exam of “Implementing Citrix XenDesktop 4”
    What is Key Word driven Testing?
    SAP AGS面试小结
    腾讯2013终端实习生一面
    指针的引用
  • 原文地址:https://www.cnblogs.com/soundcode/p/6595743.html
Copyright © 2011-2022 走看看