微信开发之xstream的简单使用

stream也是一个比较好用的java对象转xml的工具,之前由于长期使用dom4j的缘故,都没研究过这玩意儿,最近由于搞微信开发的缘故要生成xml,但是又觉得dom4j有点繁琐,之后就找到了xstream的资料,顺便学了下觉得还是挺好用,因此推荐给大家。

1 jar包的下载地址

http://xstream.codehaus.org/download.html

这里推荐使用1.3.1这个版本,貌似大部分人都用的这个


2 xstream的基本使用

(1) xstream的初始化

(2)设置别名

(3)转换


[java]  view plain  copy
  1. // XStream初始化  
  2. XStream xstream = new XStream();  
  3. XStream xstream = new XStream(new DomDriver());  
  4.   
  5. // 设置别名(可选)  
  6. xstream.alias("person", Person.class);  
  7.   
  8. // 将Java对象转换为XML  
  9. xstream.toXML(person);  
  10.   
  11. // 将XML转换为Java对象  
  12. Person person = xstream.fromXML(xml);  


这段代码大部分还是实用,但是如果有特殊字符如 >   ,  <   , &就会出现解析错误 ,因此要给xml添加扩展,反正就是一大堆的内部类,来一起看下


[java]  view plain  copy
  1. //xstream扩展  
  2. private static XStream xstream = new XStream(new XppDriver() {  
  3.         public HierarchicalStreamWriter createWriter(Writer out) {  
  4.             return new PrettyPrintWriter(out) {  
  5.                 // 对所有xml节点都增加CDATA标记  
  6.                 boolean cdata = true;  
  7.   
  8.                 public void startNode(String name, Class clazz) {  
  9.                     super.startNode(name, clazz);  
  10.                 }  
  11.   
  12.                 protected void writeText(QuickWriter writer, String text) {  
  13.                     if (cdata) {  
  14.                         writer.write("<![CDATA[");  
  15.                         writer.write(text);  
  16.                         writer.write("]]>");  
  17.                     } else {  
  18.                         writer.write(text);  
  19.                     }  
  20.                 }  
  21.             };  
  22.         }  
  23. });  


看着有点恐怖啊,不过又没必要背下来


3 赖看下我写的一个工具类

[java]  view plain  copy
  1. package org.lxh;  
  2.   
  3. import java.io.Writer;  
  4. import java.util.List;  
  5.   
  6. import com.thoughtworks.xstream.XStream;  
  7. import com.thoughtworks.xstream.core.util.QuickWriter;  
  8. import com.thoughtworks.xstream.io.HierarchicalStreamWriter;  
  9. import com.thoughtworks.xstream.io.xml.PrettyPrintWriter;  
  10. import com.thoughtworks.xstream.io.xml.XppDriver;  
  11.   
  12. public class XstreamUtil {  
  13.       
  14.     //xstream扩展  
  15.     private static XStream xstream = new XStream(new XppDriver() {  
  16.         public HierarchicalStreamWriter createWriter(Writer out) {  
  17.             return new PrettyPrintWriter(out) {  
  18.                 // 对所有xml节点都增加CDATA标记  
  19.                 boolean cdata = true;  
  20.   
  21.                 public void startNode(String name, Class clazz) {  
  22.                     super.startNode(name, clazz);  
  23.                 }  
  24.   
  25.                 protected void writeText(QuickWriter writer, String text) {  
  26.                     if (cdata) {  
  27.                         writer.write("<![CDATA[");  
  28.                         writer.write(text);  
  29.                         writer.write("]]>");  
  30.                     } else {  
  31.                         writer.write(text);  
  32.                     }  
  33.                 }  
  34.             };  
  35.         }  
  36.     });  
  37.       
  38.       
  39.       
  40.   public String object2Xml(Object obj,Object child,String alias,String aliasForChild){  
  41.       xstream.alias(alias, obj.getClass());  
  42.       xstream.alias(aliasForChild, child.getClass());  
  43.       String xml=xstream.toXML(obj);  
  44.       return xml;  
  45.   }  
  46.     
  47.   public String object2Xml(Object obj,String alias){  
  48.       xstream.alias(alias, obj.getClass());  
  49.        
  50.       String xml=xstream.toXML(obj);  
  51.       return xml;  
  52.   }  
  53. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值