2

如果我正在构建一些 XML 并使用<![CDATA[...]]>,如何对可能包含]]>子字符串的数据进行编码?会]]&gt;吗?我问是因为我一直认为 CDATA 内容是文字内容。

4

4 回答 4

8

它的效率不是很高,也不是很容易阅读,或者其他任何东西,但解决这个问题的方法似乎是写作......

]]]]><![CDATA[>
于 2009-02-12T06:46:23.870 回答
2

您可以只使用两个 cdata 标签,第一个包含 ]],第二个包含 >

于 2009-02-12T06:58:10.173 回答
-1

从某种意义上说,CDATA 是文字内容,但当然必须有某种方法来标记 CDATA 块的结尾,并且无论您选择什么,都必须以某种方式在您的字符串中表示。

当我不得不在另一个 CDATA 块中处理包含 CDATA 的 XML 文档时,就像您似乎必须做的那样,我放弃了并将整个事情编码为 Base64。然后另一方提取文本并对其进行解码。

Base64 很方便,因为它具有通用的支持和/或简单的算法,可以用多种语言将 ASCII 字符串编码和解码成它,在我的例子中是 ASP.NET 应用程序中的 C# 和 Javascript。

于 2009-02-12T06:48:44.940 回答
-2

实体不应该工作吗?

像这样:&93;&93;&gt;

或者,只是其中之一:]]&gt;

93 用于 latin1,如果以 utf-8 发送数据,则需要 unicode 实体。

作为旁注,还有其他字符在 CDATA 块中也是不允许的,一些奇怪的引号和控制流字符。

于 2009-02-12T06:48:38.560 回答