是否有与相邻 CDATA 相关的标准?
Any standards related to adjacent CDATA?
我们知道 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?如果我的APIreturns相邻CDATA,其他程序或编程语言会不会有问题处理它?
此行为绝对符合标准,应该在任何 XML 处理器中产生相同的结果。 CDATA 部分可用于在任何地方转义任何字符数据(另一个 CDATA 部分除外),您可以根据需要使用任意数量的字符数据,无论是否相邻。来自 specification:
Definition: CDATA sections may occur anywhere character data may occur; they are used to escape blocks of text containing characters which would otherwise be recognized as markup.
我们知道 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?如果我的APIreturns相邻CDATA,其他程序或编程语言会不会有问题处理它?
此行为绝对符合标准,应该在任何 XML 处理器中产生相同的结果。 CDATA 部分可用于在任何地方转义任何字符数据(另一个 CDATA 部分除外),您可以根据需要使用任意数量的字符数据,无论是否相邻。来自 specification:
Definition: CDATA sections may occur anywhere character data may occur; they are used to escape blocks of text containing characters which would otherwise be recognized as markup.