在另一个CDATA中使用CDATA

时间:2012-10-12 14:01:59

标签: xml xml-parsing cdata

我遇到这种困难的情况,我需要在另一个CDATA标签内使用CDATA标签。但情况很容易解释。

我有以下内容:

<edit>
<![CDATA[
<script type="text/javascript">
<![CDATA[
    window.onload = function() 
    {
        document.getElementById('block').onclick = function() 
        {
            this.onclick = '';
            this.value = '{LA_SEND_CONFIRM}';
            this.className = this.className.replace('button1','');
            document.getElementById('replacement').value = '{LA_BLOCK_CODE}';
        }
    }
]]>
</script>
]]>
</edit>

我需要将我的Javascript包装在CDATA中以用于显示目的,因此当我打开该XML文件时,它会正确显示并且Javascript代码位于这些CDATA标记内。它们在XML文件本身内没有任何实际意义。

正如您所知,上面的代码会给我一个XML解析错误,因为嵌套CDATA不起作用。有没有办法逃脱]]>所以我可以向用户显示这些括号?

我希望我足够清楚。

1 个答案:

答案 0 :(得分:35)

您可以通过将其替换为:

来转义CDATA部分中的]]>子字符串
]]]]><![CDATA[>

...行。有了这个,你将]]作为一个CDATA部分的一部分,> - 作为另一个CDATA部分的一部分,从前一个结束时开始。