`
whao189
  • 浏览: 124645 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

关于XStream

阅读更多
今天很偶然的一个机会看到了关于XStream这个东西,由于近来做android和xml 打交道越来越多,所以就耐着心看了看。结果发现还挺方便的,我在论坛搜索了一把,大家对XStream的褒贬不一有的人说他性能不好,有的人说他用起来方便很符合自己的需求。。。。。。


总之:众说纷纭啊!我要说的是,不管他好与坏总有它存在的理由,不然大家也就不会用它了,正因为褒贬不一他才会有进步!开源的东西希望大家一起把他做好吧。。。。

和以前一样先说问题:我的问题是在XStream 输出 的文件中包含有中文,在 从XML文件转化为对象的时候,结果中文读取不了。。。(论坛里说 需要一个 。。。xpp3_min-XXX.jar文件。。我添加上了。。还是不能解决中文问题悲剧。。)
原来的代码如下:
public class Person {
	private String name;

	private String address;

	
	public Person(String name,String address){
		this.name = name;
		this.address  = address;
	}


	public String getAddress() {
		return address;
	}


	public void setAddress(String address) {
		this.address = address;
	}


	public String getName() {
		return name;
	}


	public void setName(String name) {
		this.name = name;
	}
}



Test  class


public class Test {

	public static void main(String[] args) {
		//write file
		write();
		//read  file
		read();
		
	}
	public static void write(){
		XStream xstream = new XStream();
		Person joe = new Person("张三", "中国");
		try {
			ObjectOutputStream os  = new ObjectOutputStream(new FileOutputStream("d:/111.xml"));
			xstream.toXML(joe,os); //别忘了关 输出流
		} catch (Exception e) {
			e.printStackTrace();
		} 
	}
	public static void read(){
		 XStream sm = new XStream();   
	    try {   
	        FileInputStream ops = new FileInputStream("d:\\111.xml"); 
	    	Person t = (Person)sm.fromXML(ops);
	      
	        System.out.println(t.getName());
	        System.out.println(t.getAddress());   //别忘了关输入流
	        } catch (Exception e) {   
	            e.printStackTrace();   
	        }     
	}
//这里用来打印。。。inputstrem 的内容的。。。
	public static String convertStreamToString(InputStream is) throws IOException{
		if (is != null) {
			StringWriter writer = new StringWriter();
			char[] buffer = new char[1024];
			try {
				BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));
				int n;
				while ((n = reader.read(buffer)) != -1) {
					writer.write(buffer, 0, n);
				}
			} finally {
				is.close();
			}
			return writer.toString();
		} else {
			return "";
		}
	}


以上代码 运行。。没有错,但是在console 的结果 却和我们的期望有点差别,那就是 我们的中文。。出现了乱码,该怎么解决呢,其实很简单。。看下面的代码对比一下就知道了。。


public class Test {

	public static void main(String[] args) {
		//write file
		write();
		//read  file
		read();
		
	}
	public static void write(){
		XStream xstream = new XStream();
		Person joe = new Person("张三", "中国");
		OutputStreamWriter write =null;
		try {
			write = new OutputStreamWriter(new FileOutputStream("d:/111.xml"),"UTF-8");
			xstream.toXML(joe,os);
		} catch (Exception e) {
			e.printStackTrace();
		} finally{
			try {
				if(write != null){
					write.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	public static void read(){
		 XStream sm = new XStream();   
	    try {   
	    	;
	        FileInputStream ops = new FileInputStream("d:\\111.xml"); 
	        Person t = (Person)sm.fromXML(ops);
	        System.out.println(t.getName());
	        System.out.println(t.getAddress());   
	        } catch (Exception e) {   
	            e.printStackTrace();   
	        }     
	}
	public static String convertStreamToString(InputStream is) throws IOException{
		if (is != null) {
			StringWriter writer = new StringWriter();
			char[] buffer = new char[1024];
			try {
				BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));
				int n;
				while ((n = reader.read(buffer)) != -1) {
					writer.write(buffer, 0, n);
				}
			} finally {
				is.close();
			}
			return writer.toString();
		} else {
			return "";
		}
	}
}


你看到了。。就那么一点点。。设置输出文件的编码方式即可~!!很简单吧,我当时也郁闷了半天,还是我旁边的一个同事给提了醒,结果加了文件编码就可以了。。。。。。。。。

这样一来就不会出现问题了!但是再用到XStream的时候会出现不少的问题的,现在还没有仔细的研究XStream 源码是怎么样的,应该很不错吧!!!

0
2
分享到:
评论

相关推荐

    xstream-1.4.8最齐全的jar包

    以下是一些关于XStream的关键知识点: 1. **自动映射**:XStream会根据Java类的字段名生成对应的XML元素名。例如,一个名为`Person`的类,有`name`和`age`字段,那么生成的XML可能如下: ```xml <name>John Doe...

    xstream 的高级用法,自定义输出结构

    《XStream的高级用法与自定义输出结构详解》 XStream是一款强大的Java库,用于将Java对象序列化为XML,以及将XML反序列化回Java对象。...更多关于XStream的详细信息,可以通过提供的博文链接深入学习。

    xstream-1.3.1

    在描述中,虽然没有提供具体的信息,但我们可以理解为这是关于XStream的介绍,可能是它的下载、安装或者使用指南。XStream的核心优势在于它简洁的API和强大的类型转换能力,使得开发者能够方便地处理XML数据。 标签...

    xstream-1.4.8-javadoc.jar

    关于xstream的相关jar包,1.4.8的,不太清楚有什么作用

    xstream jar

    以下是一些关于XStream的关键知识点: 1. **对象到XML转换**:XStream通过反射机制自动处理Java对象的字段,将其转换为XML元素。你只需要创建一个XStream实例,然后调用`toXML()`方法即可得到XML表示。 2. **XML到...

    xStream_two_item

    标题“xStream_two_item”可能指的是一个关于xStream库的示例或教程,特别是与处理两个项目(items)相关的部分。xStream是一个流行的Java库,用于将对象序列化为XML和反序列化回对象,这对于数据存储和传输非常有用...

    最齐全的xstream1.4.8.jar

    最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar ...

    xstream-1.4.15.jar

    XStream 反序列化漏洞(CVE-2020-26258 & 26259),修复jar包 xstream-1.4.15.jar Xstream 是 Java 类库,用来将对象序列化成 XML (JSON) 或反序列化为对象。XStream 是一款开源软件,允许在 BSD 许可证的许可下分发...

    xstream-1.4.2.jar

    《XStream详解与应用》 XStream是一款强大的Java库,用于将对象序列化为XML,同时也能从XML数据中反序列化回对象。在标题"xstream-1.4.2.jar"中,我们看到的是XStream的一个特定版本——1.4.2。这个版本包含了...

    使用XStream是实现XML与Java对象的转换(5)--Object Stream

    标题中的“使用XStream是实现XML与Java对象的转换(5)--Object Stream”指的是一个关于XStream库在Java中如何将XML数据与Java对象进行互相转换的教程系列的第五部分,重点可能是关于“Object Stream”的内容。XStream...

    xstream最新版 - xstream-1.4.18.jar

    xstream最新版jar包

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

    XStream库提供了一个简单、直观的方式来实现这种转换,使得XML序列化和反序列化变得非常方便。本篇将详细介绍XStream如何处理XML与Java对象的相互转换,以及如何处理List、Map等集合类型的数据。 首先,XStream是一...

    xstream1.4.15.JAR

    XStream 是一个流行的 Java 库,用于将对象序列化为 XML 和从 XML 反序列化回对象。这个库广泛应用于各种 Java 应用程序,尤其是那些需要在网络间传输或存储对象数据的情况。在标题提到的 "xstream1.4.15.JAR" 文件...

    xstream相关的jar包

    XStream是一款强大的Java库,用于将Java对象序列化为XML,反之亦然。这个库的主要优点在于其简单易用的API和对复杂对象图的处理能力。在标题中提到的"Xstream相关的jar包",是指为了使用XStream库,需要引入的依赖...

    Java用xStream拼接xml

    当需要将数据转换为XML格式以便于传输或处理时,工具如xStream就显得尤为重要。Java中的xStream库提供了一个简单易用的方式来将Java对象序列化为XML,反之亦然,即反序列化XML回Java对象。 **xStream简介** xStream...

    xStream完整Jar包

    **XStream 概述** XStream 是一个 Java 库,用于将对象序列化为 XML,以及从 XML 反序列化回对象。它提供了一种简单而直观的方式来处理 XML 数据,使得 XML 文档与 Java 对象之间的转换变得轻而易举。这个“xStream...

    xstream-1.4.11-API文档-中文版.zip

    赠送jar包:xstream-1.4.11.jar; 赠送原API文档:xstream-1.4.11-javadoc.jar; 赠送源代码:xstream-1.4.11-sources.jar; 赠送Maven依赖信息文件:xstream-1.4.11.pom; 包含翻译后的API文档:xstream-1.4.11-...

    xstream-1.4.5.jar

    xstream xstream-1.4.5.jar

    xstream解析依赖包

    《XStream解析依赖包详解》 在Java开发中,数据序列化是一个不可或缺的环节,它使得对象的状态可以被保存和恢复。XStream是一款强大的Java库,用于将Java对象转换为XML,反之亦然,极大地简化了序列化和反序列化的...

    xstream-1.3.1.zip

    《XStream 1.3.1:Java对象到XML的高效转换工具》 XStream是一款强大的Java库,它能够将Java对象序列化为XML,并能从XML反序列化回Java对象。这个“xstream-1.3.1.zip”文件包含了一个名为“xstream-1.3.1.jar”的...

Global site tag (gtag.js) - Google Analytics