`
whao189
  • 浏览: 123201 次
  • 性别: 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-javadoc.jar

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

    最齐全的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最新版 - xstream-1.4.18.jar

    xstream最新版jar包

    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.19.jar

    xstream-1.4.19.jar

    xstream-1.4.20.jar

    xstream-1.4.20.jar

    xstream-1.4.jar

    xstream jar包,java对象转xml以及xml转java对象,操作很简单。

    XStream XML与Json转换

    XStream在运行时使用Java反射机制对要进行序列化的对象树的结构进行探索,并不需要对对象作出修改。XStream可以序列化内部字段,包括私private和final字段,并且支持非公开类以及内部类。 在缺省情况下,XStream不...

    xstream-1.4.2.jar

    xstream-1.4.2.jar,官网上也有,由于本人分没了,希望有分的同志给点分。如果你也每份,请上官网下,地址:http://xstream.codehaus.org/download.html

    xstream-1.4.7.jar

    xstream-1.4.7.jar XML

    解决XStream注解同名冲突

    com.thoughtworks.xstream.converters.ConversionException: No field 'null' found in class '.....(注解的类路径)' ---- Debugging information ---- message : No field 'null' found in class '.....' cause...

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

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

    xstream1.22.jar

    xstream 1.2 ,xstream 1.2.2.jar xstream 1.2 ,xstream 1.2.2.jar

    xstream-1.4.2

    xstream-1.4.2

    xstream相关的jar包

    xstream所需要的jar包,xstream-1.4.9.jar、dom4j-1.6.1.jar、xpp3_min-1.1.4c.jar等

    powermock-classloading-xstream-1.4.7

    powermock-classloading-xstream-1.4.7powermock-classloading-xstream-1.4.7powermock-classloading-xstream-1.4.7powermock-classloading-xstream-1.4.7powermock-classloading-xstream-1.4.7powermock-class...

    xstream-1.3.1-sae-liufeng

    修改XStream源码,解决SAE不支持XStream的问题。

    XStream解析XML实例

    XStream解析XML实例

    xstream-1.4.5.jar

    xstream xstream-1.4.5.jar

Global site tag (gtag.js) - Google Analytics