xstream的简单使用
2015-08-30 19:01
267 查看
xstream也是一个比较好用的java对象转xml的工具,之前由于长期使用dom4j的缘故,都没研究过这玩意儿,最近由于搞微信开发的缘故要生成xml,但是又觉得dom4j有点繁琐,之后就找到了xstream的资料,顺便学了下觉得还是挺好用,因此推荐给大家。
1 jar包的下载地址
http://xstream.codehaus.org/download.html
这里推荐使用1.3.1这个版本,貌似大部分人都用的这个
2 xstream的基本使用
(1) xstream的初始化
(2)设置别名
(3)转换
// XStream初始化
XStream xstream = new XStream();
XStream xstream = new XStream(new DomDriver());
// 设置别名(可选)
xstream.alias("person", Person.class);
// 将Java对象转换为XML
xstream.toXML(person);
// 将XML转换为Java对象
Person person = xstream.fromXML(xml);
这段代码大部分还是实用,但是如果有特殊字符如 > , < , &就会出现解析错误 ,因此要给xml添加扩展,反正就是一大堆的内部类,来一起看下
//xstream扩展
private static XStream xstream = new XStream(new XppDriver() {
public HierarchicalStreamWriter createWriter(Writer out) {
return new PrettyPrintWriter(out) {
// 对所有xml节点都增加CDATA标记
boolean cdata = true;
public void startNode(String name, Class clazz) {
super.startNode(name, clazz);
}
protected void writeText(QuickWriter writer, String text) {
if (cdata) {
writer.write("<![CDATA[");
writer.write(text);
writer.write("]]>");
} else {
writer.write(text);
}
}
};
}
});
看着有点恐怖啊,不过又没必要背下来
3 赖看下我写的一个工具类
package org.lxh;
import java.io.Writer;
import java.util.List;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.core.util.QuickWriter;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
import com.thoughtworks.xstream.io.xml.PrettyPrintWriter;
import com.thoughtworks.xstream.io.xml.XppDriver;
public class XstreamUtil {
//xstream扩展
private static XStream xstream = new XStream(new XppDriver() {
public HierarchicalStreamWriter createWriter(Writer out) {
return new PrettyPrintWriter(out) {
// 对所有xml节点都增加CDATA标记
boolean cdata = true;
public void startNode(String name, Class clazz) {
super.startNode(name, clazz);
}
protected void writeText(QuickWriter writer, String text) {
if (cdata) {
writer.write("<![CDATA[");
writer.write(text);
writer.write("]]>");
} else {
writer.write(text);
}
}
};
}
});
public String object2Xml(Object obj,Object child,String alias,String aliasForChild){
xstream.alias(alias, obj.getClass());
xstream.alias(aliasForChild, child.getClass());
String xml=xstream.toXML(obj);
return xml;
}
public String object2Xml(Object obj,String alias){
xstream.alias(alias, obj.getClass());
String xml=xstream.toXML(obj);
return xml;
}
}
是不是觉得很简单呢
1 jar包的下载地址
http://xstream.codehaus.org/download.html
这里推荐使用1.3.1这个版本,貌似大部分人都用的这个
2 xstream的基本使用
(1) xstream的初始化
(2)设置别名
(3)转换
// XStream初始化
XStream xstream = new XStream();
XStream xstream = new XStream(new DomDriver());
// 设置别名(可选)
xstream.alias("person", Person.class);
// 将Java对象转换为XML
xstream.toXML(person);
// 将XML转换为Java对象
Person person = xstream.fromXML(xml);
这段代码大部分还是实用,但是如果有特殊字符如 > , < , &就会出现解析错误 ,因此要给xml添加扩展,反正就是一大堆的内部类,来一起看下
//xstream扩展
private static XStream xstream = new XStream(new XppDriver() {
public HierarchicalStreamWriter createWriter(Writer out) {
return new PrettyPrintWriter(out) {
// 对所有xml节点都增加CDATA标记
boolean cdata = true;
public void startNode(String name, Class clazz) {
super.startNode(name, clazz);
}
protected void writeText(QuickWriter writer, String text) {
if (cdata) {
writer.write("<![CDATA[");
writer.write(text);
writer.write("]]>");
} else {
writer.write(text);
}
}
};
}
});
看着有点恐怖啊,不过又没必要背下来
3 赖看下我写的一个工具类
package org.lxh;
import java.io.Writer;
import java.util.List;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.core.util.QuickWriter;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
import com.thoughtworks.xstream.io.xml.PrettyPrintWriter;
import com.thoughtworks.xstream.io.xml.XppDriver;
public class XstreamUtil {
//xstream扩展
private static XStream xstream = new XStream(new XppDriver() {
public HierarchicalStreamWriter createWriter(Writer out) {
return new PrettyPrintWriter(out) {
// 对所有xml节点都增加CDATA标记
boolean cdata = true;
public void startNode(String name, Class clazz) {
super.startNode(name, clazz);
}
protected void writeText(QuickWriter writer, String text) {
if (cdata) {
writer.write("<![CDATA[");
writer.write(text);
writer.write("]]>");
} else {
writer.write(text);
}
}
};
}
});
public String object2Xml(Object obj,Object child,String alias,String aliasForChild){
xstream.alias(alias, obj.getClass());
xstream.alias(aliasForChild, child.getClass());
String xml=xstream.toXML(obj);
return xml;
}
public String object2Xml(Object obj,String alias){
xstream.alias(alias, obj.getClass());
String xml=xstream.toXML(obj);
return xml;
}
}
是不是觉得很简单呢
相关文章推荐
- XML 与 JSON 优劣对比
- As3.0 xml + Loader应用代码
- 网马生成器 MS Internet Explorer XML Parsing Buffer Overflow Exploit (vista) 0day
- ext读取两种结构的xml的代码
- C#针对xml基本操作及保存配置文件应用实例
- asp下查询xml的实现代码
- sqlserver FOR XML PATH 语句的应用
- 使用sp_xml_preparedocument处理XML文档的方法
- C#中的Linq to Xml详解
- C#操作XML文件实例汇总
- SQL Server中的XML数据进行insert、update、delete
- SQL Server中的XML数据进行insert、update、delete操作实现代码
- 关于SQLServer2005的学习笔记 XML的处理
- C#通过DataSet读写xml文件的方法
- C#实现基于XML配置MenuStrip菜单的方法
- php xml 入门学习资料
- Zend 输出产生XML解析错误
- PHP遍历XML文档所有节点的方法
- PHP实现XML与数据格式进行转换类实例