package com.zeng.xstream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
public class XStreamUtil {
private static Map<Class, Class> mClasses = new HashMap<Class, Class>();
private static XStream xStream = new XStream(new DomDriver());
private static Map<String, Class> wClasses = new HashMap<String, Class>();
/**
*
* @param clsz
* 每一层的标签对应的class (注意! 不是每一个标签!)
* @param fileName
* 文件路径("/sdcard/test.xml")
* @param NULL
* 暂没用到;
* @return 返回的是最外层对象:
*/
public static Object Xml2Object(List<Class> clsz, String fileName, String NULL) {
for (Class cls : clsz) {
if (mClasses.containsKey(cls))
continue;
mClasses.put(cls, cls);
xStream.processAnnotations(cls);
}
try {
// 这个是设置编码,因为可能编码不同会显现乱码,这个应该还没有具体解决乱码问题
BufferedReader br = new BufferedReader(
new InputStreamReader(new FileInputStream(fileName), "GBK"));
return xStream.fromXML(br);
// return xStream.fromXML(new FileReader(new
// File(fileName)));//这个是直接读
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
/**
*
* @param clsz
* : 每一层的标签对应的class
* @param str
* : xml 解析出来的String
* @return 返回的是最外层对象:
*/
public static Object Xml2Object(List<Class> clsz, String str) {
for (Class cls : clsz) {
if (mClasses.containsKey(cls))
continue;
mClasses.put(cls, cls);
xStream.processAnnotations(cls);
}
return xStream.fromXML(str);
}
/*--------------------------------------------*/
/*
* Xml2Object 与 Object2Xml 的区别在于
* xStream.processAnnotations(cls);
* xStream.alias(cls.node, cls.cls);
*/
/*-------------------------------------------*/
/**
*
* @param clsz
* 这个和上面的不同就是,这个写入的时候需要 标签 和 type(class); 所以定义了一个类,方便点;
* @param obj
* 这个是读取到的对象
* @return
*/
public static String Object2Xml(List<XStreamNode> clsz, Object obj) {
for (XStreamNode cls : clsz) {
if (wClasses.containsKey(cls.node))
continue;
wClasses.put(cls.node, cls.cls);
xStream.alias(cls.node, cls.cls);
}
return xStream.toXML(obj);
}
static class XStreamNode {
public XStreamNode(String node, Class cls) {
// TODO Auto-generated constructor stub
this.node = node;
this.cls = cls;
}
public String node;
public Class cls;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
使用XStream, java Object 与xml之间的转换,以及写入SD卡
共39个文件
class:14个
png:6个
java:6个
5星 · 超过95%的资源 需积分: 16 87 下载量 157 浏览量
2012-08-22
10:11:16
上传
评论
收藏 894KB RAR 举报
温馨提示
博客连接 http://blog.csdn.net/zgf1991/article/details/7894427 使用XStream, java Object 与xml之间的转换,以及写入SD卡
资源推荐
资源详情
资源评论
收起资源包目录
XstreamTest.rar (39个子文件)
XstreamTest
.project 847B
bin
XstreamTest.apk 167KB
res
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
ic_launcher.png 4KB
drawable-mdpi
ic_launcher.png 2KB
resources.ap_ 11KB
classes
com
zeng
xstream
R$string.class 421B
R$layout.class 388B
XStreamUtil.class 4KB
XstreamTestActivity$2.class 3KB
XstreamTestActivity$1.class 2KB
R$drawable.class 401B
R.class 517B
model
Rows.class 1008B
LetterItem.class 3KB
LetterInfoList.class 744B
XstreamTestActivity.class 2KB
XStreamUtil$XStreamNode.class 568B
R$attr.class 334B
R$id.class 433B
classes.dex 369KB
proguard.cfg 1KB
.settings
org.eclipse.core.resources.prefs 203B
AndroidManifest.xml 1011B
libs
xstream-1.4.2.jar 470KB
jdom.jar 149KB
src
com
zeng
xstream
XStreamUtil.java 3KB
model
LetterInfoList.java 326B
Rows.java 594B
LetterItem.java 2KB
XstreamTestActivity.java 3KB
project.properties 360B
res
values
strings.xml 188B
layout
main.xml 956B
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
ic_launcher.png 4KB
drawable-mdpi
ic_launcher.png 3KB
.classpath 425B
gen
com
zeng
xstream
R.java 839B
assets
共 39 条
- 1
zgf1991
- 粉丝: 152
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页