为什么要使用XML CDATA块?

在创建
XML时,我想知道为什么使用CDATA块而不是仅仅转义数据. CDATA块中是否允许某些内容无法转义并放置在常规标记中?

<node><![CDATA[ ...something... ]]></node>

代替

<node>...something...</node>

在任何一种情况下,您自然需要转义数据:

function xmlspecialchars($text)
{
    return str_replace('&#039;', '&apos;', htmlspecialchars($text, ENT_QUOTES, 'utf-8'));
}

spec开始,当你没有选择逃避数据时,CDATA似乎只是一个可行的解决方案 – 但你仍然相信它.例如,来自您博客的RSS提要(由于某种原因导致无法转义实体).

最佳答案 CDATA只是保持原始文本不变的标准方式,这意味着无论应用程序进程如何,XML都不需要采取任何明确的操作来进行unescape.

当您使用保留符号时,通常使用嵌入在XHTML中的JavaScript来实现这一点:

<script type="text/javascript">
//<![CDATA[
    var test = "<This is a string with reserved characters>";

    if (1 > 0) {
        alert(test);
    }
//]]>
</script>

如果你有if(1& gt; 0),那么就必须明确地进行unescape(它没有).它也更像这样的可读性.

点赞