`

XStream转换Java对象与XML

    博客分类:
  • java
阅读更多

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>  
<dependency>
	<groupId>com.thoughtworks.xstream</groupId>
	<artifactId>xstream</artifactId>
	<version>1.4.2</version>
</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 + "\r\n");  
  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("\r\n");  
  96.         sb.append(networkInfo);  
  97.         sb.append("\r\n");  
  98.         for (DiskInfo disk : diskInfos) {  
  99.             sb.append(disk.toString());  
  100.             sb.append("\r\n");  
  101.         }  
  102.         return sb.toString();  
  103.     }  
  104. }  
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代码 复制代码 收藏代码
  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. }  
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代码 复制代码 收藏代码
  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  
<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_java对象和xml的互相转换

    总结来说,XStream 是一个强大且灵活的 Java 库,它简化了 Java 对象与 XML 数据之间的转换过程,提供了高度可定制的序列化和反序列化功能。通过合理利用它的特性,开发者可以在不牺牲代码可读性和可维护性的同时,...

    XStream在Java对象和XML之间相互转换

    XStream是一款强大的Java库,主要用于将Java对象序列...在实际开发中,XStream的简单性和灵活性使其成为处理Java对象与XML数据之间转换的首选工具。通过合理配置和使用,可以极大地提高开发效率并简化数据处理流程。

    使用xstream进行java类与xml文件互转解析--代码

    总的来说,XStream提供了一种简洁、直观的方式来处理Java对象与XML之间的转换。它的强大之处在于可以自动处理复杂的对象结构,并且允许开发者自定义XML的表示方式。通过熟练掌握XStream,可以极大地提高Java项目中...

    使用XStream, java Object 与xml之间的转换,以及写入SD卡

    XStream是一款强大的库,它使得Java对象与XML之间的转换变得简单易行。本篇文章将深入探讨如何利用XStream进行Java对象到XML的转换,并将其存储到SD卡上。 首先,XStream的核心功能在于它可以将Java对象直接转换为...

    xstream对象与xml转换

    总之,XStream是一个强大的工具,可以帮助开发者轻松地在Java对象和XML之间进行转换。其简洁的API和自动类型转换能力使得它在处理序列化和反序列化任务时非常高效。无论你是新手还是经验丰富的开发者,了解并掌握...

    com.thoughtworks.xstream.XStream操作XML和java对象的一些用法

    本篇将详细介绍XStream如何处理XML与Java对象的相互转换,以及如何处理List、Map等集合类型的数据。 首先,XStream是一个强大的库,它由Pete Gyford开发,用于将Java对象序列化为XML,同时也能将XML反序列化为Java...

    好用的xStream XML和JAVA对象互相转换的简单示例

    然而,将XML与Java对象直接对应起来操作可以大大简化编程工作,这就是XStream库的作用所在。XStream是一个轻量级、高性能的库,能够将Java对象序列化为XML,同时也能将XML反序列化回Java对象,实现XML和Java对象的...

    xStream 实现xml与 java对象的转换

    【标题】:“xStream 实现xml与 java对象的转换” 在Java开发中,XML作为一种常见的数据交换格式,常用于存储和传输数据。然而,XML与Java对象之间的转换并不总是直观和简便的。这时,xStream库应运而生,它提供了...

    使用 XStream 把 Java 对象序列化为 XML

    在实际项目中,了解并熟练掌握XStream可以帮助我们更有效地处理Java对象与XML之间的转换,特别是在需要序列化大量数据或者构建RESTful API时。 在提供的压缩包中,`sample.xml`可能是使用XStream序列化后的Java对象...

    xml解析及使用XStream实现javaBean与xml之间的转换

    在`xmlAnalysis`文件夹中,可能包含了一个简单的Java程序,演示了如何使用DOM、SAX、StAX和XStream解析XML文件,并展示了XStream如何在JavaBean与XML之间进行转换。你可以运行这些代码,观察输出结果,以加深理解。...

    Java用xStream拼接xml

    xStream简化了Java对象与XML之间的转换,使得在处理XML数据时,开发者无需关注底层的XML构造细节。在Web Service接口对接时,如果需要传递XML内容,使用xStream可以高效、便捷地完成XML的拼接。通过合理配置和使用,...

    xstream轻松解析xml到java对象

    以下是一个简单的示例,演示如何使用XStream进行XML与Java对象的转换: ```java import com.thoughtworks.xstream.XStream; class User { private String name; private int age; // getters and setters ...

    android XMl 解析神奇xstream 二: 把对象转换成xml

    XStream是一个强大的库,它使得Java对象与XML之间的转换变得极其简单。本篇文章将深入探讨如何在Android环境中利用XStream将对象转换成XML。 首先,我们需要理解XStream的基本工作原理。XStream的核心功能是它可以...

    XML转换为JAVA对象的方法

    在提供的`AppDemo`文件中,可能包含了一个简单的示例应用,演示了如何在实际项目中使用XStream进行XML和Java对象的转换。通过运行和分析这个例子,你可以更好地理解这一过程,并将其应用到自己的项目中。 总之,...

    XStream测试Demo-xml与java对象的相互转换

    这个"XStream测试Demo-xml与java对象的相互转换"是一个实例,展示了如何利用XStream进行这两种操作。在本文中,我们将深入探讨XStream的工作原理、使用方法以及其在实际开发中的应用。 首先,XStream的核心功能是...

    xStream转换xml和json源码

    XML与Java对象的转换 #### 2.1 将Java对象转换为XML 创建一个简单的Java类,例如`Person`: ```java public class Person { private String name; private int age; // getters and setters } ``` 然后使用...

    java对象与xml的互相转换

    Java对象与XML之间的转换是Java开发中常见的需求,特别是在数据交换、配置文件存储或Web服务交互等场景。本文将深入探讨如何实现Java对象到XML以及XML到Java对象的转换。 首先,Java对象到XML的转换通常涉及到Java...

    使用XStream是实现XML与Java对象的转换(4)--转换器

    XStream是一个强大的库,专门用于XML与Java对象之间的互相转换。这篇博文将深入探讨如何利用XStream的转换器功能来优化这一过程。 XStream的核心原理是通过反射机制自动将Java对象映射到XML结构,并反之亦然。然而...

    XStream解析xml 转换成对象案例

    总结起来,XStream是一个强大的工具,可以方便地进行Java对象与XML之间的转换。通过理解其基本原理和使用方法,开发者可以在处理数据交换和持久化问题时,节省大量时间和精力。在实践中,结合源码分析和工具使用,...

Global site tag (gtag.js) - Google Analytics