CDATA嵌套 的实现

转载 2011年01月18日 17:06:00

今天代码解析一段XML时报错,经过检查发现里面有嵌套CDATA标志的情况,导致XML结构发生了变化,不能转换为xml对象了,百度下,找到下面的解决方案,测试下好使,分享下!

 

http://hi.baidu.com/yin_xiaogang/blog/item/f0f4a4ce3ef0c50592457e78.html

 

在CDATA内部的所有内容都会被解析器忽略。一个 CDATA 部件以"<![CDATA[" 标记开始,以"]]>"标记结束。但是要记住,CDATA是不能够嵌套的。但是现在,就是有人要求实现CDATA的嵌套。

比如,将下面这段XML加到另外一个XML的某个元素里面:

<?xml version="1.0" encoding="UTF-8" ?>
<System><id>library</id>
<name>Library Management</name>
<description><![CDATA[This is a sample library management subsystem for Signet.]]></description>
<Categories>
<System/>

将内部的CDATA的结尾转义?那就变成了"<![CDATA[" 和"]]>amp;",这样不好吧,老师说,接收XML的那一方怎么会知道你在里面加上了转义?

那么,可以把CDATA的结尾的"]]>"破坏掉,把它分到两个CDATA中,然后调用Java的API读取该元素的数据时,实际上API同时读取两个CDATA块,然后合成一个。

那么,把上面的XML作为一个字符串来处理,将"]]>"替换为"]]]]><![CDATA[",千万要记住,不要包含空格进去。这样,结果应该是

<?xml version="1.0" encoding="UTF-8"?>
<Messages>
<Message type="data">
<code>1199242678515-176590595</code>
<date>2008/01/02</date>
<time>10:57:58</time>
<content><![CDATA[<?xml version="1.0" encoding="UTF-8" ?>
<System><id>library</id>
<name>Library Management</name>
<description><![CDATA[This is a sample library management subsystem for Signet.]]]]><![CDATA[></description>
<Categories>
<System/>]]></content>
</Message>

</Messages>

这样,利用Object org.dom4j.Element.getData()方法得到的数据才是原始的XML片段。

 

XML<![CDATA[ ]]>嵌套

最近做项目时遇到XML嵌套的问题,找了些文章,感觉说的不是特清楚,在此重新解释一下,作为备忘。 有的时候我们需将一段XML报文需要转义的字符串分段在不同的方法里分次解析,这时可能会用到XML嵌套的...
  • tclzcyzcy
  • tclzcyzcy
  • 2015年12月18日 10:13
  • 332

xml格式异常-CDATA嵌套

在CDATA内部的所有内容都会被解析器忽略。一个 CDATA 部件以""标记结束。但是要记住,CDATA是不能够嵌套的。但是现在,就是有人要求实现CDATA的嵌套。 比如,将下面这段XML加到另外一...
  • xuxuchuan
  • xuxuchuan
  • 2016年11月29日 15:57
  • 605

soapUi发送报文错误导致原因CDATA嵌套问题

在CDATA内部的所有内容都会被解析器忽略。一个 CDATA 部件以""标记结束。但是要记住,CDATA是不能够嵌套的。   但如果你想把一段未知的文本输出到XML中,就一定会遇到因为CDATA嵌...
  • zhanglujie2008
  • zhanglujie2008
  • 2015年05月15日 18:50
  • 1128

CDATA嵌套

与朋友共同进步---CDATA嵌套2008年01月18日 星期五 15:05在CDATA内部的所有内容都会被解析器忽略。一个 CDATA 部件以""标记结束。但是要记住,CDATA是不能够嵌套的。但是...
  • paul_lh
  • paul_lh
  • 2011年06月25日 23:13
  • 1679

Unity中XMLParser的使用

C# 轻量级解析XML——XMLParser 记得之前写过一篇关于XML解析的博客(猛点查看),之前是因为发现Xpath这个类似SQL语句的字符串解析XML,觉得很惊奇,遂有了那篇文章。用XMLPa...
  • u010975088
  • u010975088
  • 2016年03月04日 10:05
  • 1268

解决<![CDATA[xml]]>不能嵌套问题!

String msgXml = xml; String str = ""; 如果xml
  • u013372185
  • u013372185
  • 2014年10月20日 17:26
  • 597

thymeleaf使用详解

thymeleaf使用详解
  • pdw2009
  • pdw2009
  • 2017年10月01日 21:51
  • 488

ibatis 中动态SQL查询和动态标签嵌套的使用

ibatis 动态查询 对于从事 Java EE 的开发人员来说,iBatis 是一个再熟悉不过的持久层框架了,在 Hibernate、JPA 这样的一站式对象 / 关系映射(O/R Mapping...
  • u014475796
  • u014475796
  • 2016年05月09日 17:21
  • 6207

xml格式异常-CDATA嵌套

今天代码解析一段XML时报错,经过检查发现里面有嵌套CDATA标志的情况,导致XML结构发生了变化,不能转换为xml对象了,百度下,找到下面的解决方案,测试下好使,分享下!   http:...
  • z69183787
  • z69183787
  • 2014年09月03日 16:08
  • 4969

CDATA嵌套 的实现

今天代码解析一段XML时报错,经过检查发现里面有嵌套CDATA标志的情况,导致XML结构发生了变化,不能转换为xml对象了,百度下,找到下面的解决方案,测试下好使,分享下!   http:...
  • educast
  • educast
  • 2014年04月16日 16:40
  • 993
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CDATA嵌套 的实现
举报原因:
原因补充:

(最多只允许输入30个字)