xtream处理特殊字符的问题
来源:互联网 发布:什么软件搞笑拍照 编辑:程序博客网 时间:2024/06/02 19:28
需求:在生成XML文档中需要支持CDATA标签,而且不是所字段都需要增加,只需要某些特定的字段增加CDATA的标签。
研究:在网上找了一些相关资料,基本采用的方法都是重载XppDriver,做一个MyXppDriver类对XppDriver进行扩展,MyXppDriver中的作用,就是将要生成的xml文件的text进行字符转义,最后使用XStream xstream = new XStream(new MyXppDriver)来创建XStream对象,最终支持CDATA标签。
思考:首先本人认为这样写这个类比较麻烦,现在我需要修改部份重载让那些要输出的text中,如果有"<![CDATA["开始和"]]>"结束的字段就不用进行任何特殊符号的转义,而某字段没有CDATA标签的起讫符号时,就依然使用原有的PrettyPrintWriter 的writerText方法输出,即将text中的特殊符号进行转义,如:引号(")会被转义为""",以此来确保输出的xml文件在读取时不会出错
Java代码
- protected static String PREFIX_CDATA = "<![CDATA[";
- protected static String SUFFIX_CDATA = "]]>";
- /**
- * 初始化XStream
- * 可支持某一字段可以加入CDATA标签
- * 如果需要某一字段使用原文
- * 就需要在String类型的text的头加上"<![CDATA["和结尾处加上"]]>"标签,
- * 以供XStream输出时进行识别
- * @param isAddCDATA 是否支持CDATA标签
- * @return
- */
- public static XStream initXStream(boolean isAddCDATA){
- XStream xstream = null;
- if(isAddCDATA){
- xstream = new XStream(
- new XppDriver() {
- public HierarchicalStreamWriter createWriter(Writer out) {
- return new PrettyPrintWriter(out) {
- protected void writeText(QuickWriter writer, String text) {
- if(text.startsWith(PREFIX_CDATA)
- && text.endsWith(SUFFIX_CDATA)) {
- writer.write(text);
- }else{
- super.writeText(writer, text);
- }
- }
- };
- };
- }
- );
- }else{
- xstream = new XStream();
- }
- return xstream;
0 0
- xtream处理特殊字符的问题
- 用javascript处理特殊字符的问题
- 特殊字符的处理
- 特殊字符的处理
- 特殊字符的处理
- 特殊字符‘&’的处理
- 密码特殊字符问题处理
- flyway初始化脚本存在默认特殊字符的问题处理
- XML 特殊字符的处理
- BW特殊字符的处理
- URL特殊字符的处理
- oracle 特殊字符的处理
- mysql 特殊字符的处理
- URL特殊字符的处理
- Sqlite 特殊字符的处理
- Lucene 的特殊字符 处理
- JSON特殊字符的处理
- XML的特殊字符处理
- 最直观的方式学习flexbox属性
- Unable to execute dex: Multiple dex files define Lorg/cocos2dx/lib/Cocos2dxAccelerometer
- 快速排序20160901
- 对脚本语言的理解
- new Runnable() {} 可以这样用吗?
- xtream处理特殊字符的问题
- 1-Linux驱动基本框架结构
- AS教程学习
- Jsonp如何实现跨域
- 在windows 64bit系统上安装python NLTK
- C++ hdoj 2043 密码
- JavaScript命名规范
- 程序员修炼之路0
- C语言入门-第八周:作业02