使用CDATA包含在另一个CDATA中

9 浏览
0 Comments

使用CDATA包含在另一个CDATA中

我有一个困难的情况,我需要在另一个CDATA标签中使用CDATA标签。虽然情况很简单。

我有以下内容:




]]>

为了显示的目的,我需要将我的Javascript代码包裹在CDATA中,这样当我打开XML文件时,它会正确显示,并且Javascript代码位于那些CDATA标签中。它们在XML文件本身中没有实际意义。

正如你已经知道的,上面的代码会给我一个XML解析错误,因为嵌套的CDATA不起作用。有没有办法转义]]>,以便我可以将这些括号显示给我的用户?

我希望我讲得足够清楚。

0
0 Comments

CDATA(字符数据)是XML中用来包含文本数据的标记。它允许在文本中包含特殊字符,而不需要进行转义。然而,有时候在CDATA中嵌套另一个CDATA会导致问题。

问题的出现是因为XML解析器将两个相邻的CDATA部分视为一个CDATA部分,而不会将它们之间的内容视为嵌套的CDATA。在这种情况下,如果CDATA部分中出现了“]]>”这个字符序列,解析器会将其视为CDATA部分的结束标记,从而导致解析错误。

为了解决这个问题,可以使用一个巧妙的技巧。可以将“]]>”替换为“]]]]>”,这样可以将“]]”作为一个CDATA部分的一部分,而“>”作为另一个CDATA部分的一部分,从而避免了解析错误。

下面是一个示例代码,展示了如何在CDATA部分中嵌套另一个CDATA:

[apcode language="xml"]


[/apcode]

通过使用这种方法,可以在CDATA中正确地嵌套另一个CDATA,而不会导致解析错误。

需要注意的是,这种方法可能会影响某些解析器的解析结果,因为这些CDATA部分在XML节点树中是可见的。因此,在使用这种方法时,需要谨慎考虑解析器的兼容性。

更多关于这个的问题可以参考以下链接:stackoverflow.com/questions/223652/…

0