在创建
XML时,我想知道为什么使用CDATA块而不是仅仅转义数据. CDATA块中是否允许某些内容无法转义并放置在常规标记中?
<node><![CDATA[ ...something... ]]></node>
代替
<node>...something...</node>
在任何一种情况下,您自然需要转义数据:
function xmlspecialchars($text)
{
return str_replace(''', ''', 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(它没有).它也更像这样的可读性.