【发布时间】:2016-06-18 15:29:53
【问题描述】:
我们知道 CDATA 不能嵌套,所以我喜欢使用 Using CDATA inside another CDATA 中提供的解决方案,将 ]]> 替换为 ]]]]><![CDATA[>。
因此
<Root>
<![CDATA[
<AAA>
<![CDATA[
<BBB>hello world</BBB>
]]>
</AAA>
]]>
</Root>
变成
<Root>
<![CDATA[
<AAA>
<![CDATA[
<BBB>hello world</BBB>
]]]]><![CDATA[>
</AAA>
]]>
</Root>
XML 是我的 API 的响应,它将被不受我控制的其他程序使用。
对于 .NET,我的实验表明 InnerText 可以在所有 CDATA 部分中输出文本。
var Root= doc.SelectNode("/Root");
var cdata = Root.InnerText;
cdata 是
<AAA>
<![CDATA[
<BBB>hello world</BBB>
]]>
</AAA>
.NET 的行为是否符合任何标准?是否有任何标准说明如何处理相邻的 CDATA?如果我的 API 返回相邻的 CDATA,其他程序或编程语言是否会处理它?
【问题讨论】: