XStream支持CDATA标签

来源:互联网 发布:淘宝开店预存金额 编辑:程序博客网 时间:2024/04/29 20:37

在写微信被动消息回复时,遇到需要在xml文件中对String类型增加cdata标签,使用XStream不支持。后来在网上找了一大堆都不行,要不就写的十分复杂懒得看。

后来决定重写了XStream的初始化方法,2步搞定。

protected static String PREFIX_CDATA = "<![CDATA[";protected static String SUFFIX_CDATA = "]]>";    /**  * xstream初始化方法实现将String类型的属性增加cdata  * @return  */    public static XStream initXStream() {          return new XStream(new XppDriver() {              @Override              public HierarchicalStreamWriter createWriter(Writer out) {                  return new PrettyPrintWriter(out) {                  boolean iscdata=false;                @Overridepublic void startNode(String name, Class clazz) {                    super.startNode(name, clazz);                    if(clazz.getName().equals("java.lang.String")){                    iscdata=true;                    }else{                    iscdata=false;                    }}protected void writeText(QuickWriter writer, String text) {                    if(iscdata){                    writer.write(PREFIX_CDATA + text + SUFFIX_CDATA);                      }else{                    writer.write(text);                    }                    }                  };              }          });      }  

重写startnode方法和writeText方法就ok了

我写的这个是String类型的加CDATA标签,大家可以把startnode方法中的两个参数打印一下,就什么都清楚了,可以根据自己的需要修改。

后来发现微信消息回复可以不用加CDATA标签,狂汗!

1 0
原创粉丝点击