`
donny_tsj
  • 浏览: 4295 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

XStream支持CDATA标签

阅读更多
需求:在生成XML文档中需要支持CDATA标签,而且不是所字段都需要增加,只需要某些特定的字段增加CDATA的标签。

研究:在网上找了一些相关资料,基本采用的方法都是重载XppDriver,做一个MyXppDriver类对XppDriver进行扩展,MyXppDriver中的作用,就是将要生成的xml文件的text进行字符转义,最后使用XStream xstream = new XStream(new MyXppDriver)来创建XStream对象,最终支持CDATA标签。

思考:首先本人认为这样写这个类比较麻烦,现在我需要修改部份重载让那些要输出的text中,如果有"<![CDATA["开始和"]]>"结束的字段就不用进行任何特殊符号的转义,而某字段没有CDATA标签的起讫符号时,就依然使用原有的PrettyPrintWriter 的writerText方法输出,即将text中的特殊符号进行转义,如:引号(")会被转义为"&quot",以此来确保输出的xml文件在读取时不会出错



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;
	}

转载请标出处: http://donny-tsj.iteye.com/blog/951982

分享到:
评论
1 楼 shenjian1116 2011-10-28  
你好,我尝试了你的方法,但是少org/xmlpull/v1/XmlPullParserFactory这个jar,这个类是那个jar提供的,pom是什么,3Q

相关推荐

    XStream XML与Json转换

    XStream可以序列化内部字段,包括私private和final字段,并且支持非公开类以及内部类。 在缺省情况下,XStream不需要配置映射关系,对象和字段将映射为同名XML元素。但是当对象和字段名与XML中的元素名不同时,...

    xstream最新版 - xstream-1.4.18.jar

    xstream最新版jar包

    解决XStream注解同名冲突

    com.thoughtworks.xstream.converters.ConversionException: No field 'null' found in class '.....(注解的类路径)' ---- Debugging information ---- message : No field 'null' found in class '.....' cause...

    xstream-1.4.11-API文档-中文版.zip

    标签:thoughtworks、xstream、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请...

    最齐全的xstream1.4.8.jar

    最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar ...

    xstream-1.4.15.jar

    XStream 反序列化漏洞(CVE-2020-26258 & 26259),修复jar包 xstream-1.4.15.jar Xstream 是 Java 类库,用来将对象序列化成 XML (JSON) 或反序列化为对象。XStream 是一款开源软件,允许在 BSD 许可证的许可下分发...

    XStream转换

    实现了bean转换为xml,xml转换为bean,xml转换为json等

    xstream-1.4.2

    xstream-1.4.2

    xstream-1.4.7-API文档-中文版.zip

    标签:thoughtworks、xstream、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请...

    XStream解析字符串不同的标签

    如果是android的项目请使用xstream-1.4.4.jar

    xstream-1.4.19.jar

    xstream-1.4.19.jar

    xstream-1.4.20.jar

    xstream-1.4.20.jar

    xstream-1.3.1-sae-liufeng

    修改XStream源码,解决SAE不支持XStream的问题。

    xstream-1.4.7-API文档-中英对照版.zip

    标签:thoughtworks、xstream、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,...

    xstream-1.4.jar

    xstream jar包,java对象转xml以及xml转java对象,操作很简单。

    xstream1.22.jar

    xstream 1.2 ,xstream 1.2.2.jar xstream 1.2 ,xstream 1.2.2.jar

    xstream-1.4.2.jar

    xstream-1.4.2.jar,官网上也有,由于本人分没了,希望有分的同志给点分。如果你也每份,请上官网下,地址:http://xstream.codehaus.org/download.html

    xstream-1.4.7.jar

    xstream-1.4.7.jar XML

    XStream解析XML实例

    XStream解析XML实例

    XStream DOC

    XStream DOC

Global site tag (gtag.js) - Google Analytics