我認爲沒有真正的區別。我更喜歡使用CDATA來處理所有事情,因爲我不必關心要逃跑的角色,我唯一需要注意的就是內容中的「]]>」,如果將CDATA開頭並將標籤關閉成多個片段。
例子(PHP)
<?php
function getXMLContent($content)
{
if
(
(strpos($content, '<') !== false) ||
(strpos($content, '>') !== false) ||
(strpos($content, '&') !== false) ||
(strpos($content, '"') !== false) ||
(strpos($content, '\'') !== false)
)
{
// If value contains ']]>', we need to break it into multiple CDATA tags
return "<![CDATA[". str_replace(']]>', ']]]]><![CDATA[>', $content) ."]]>";
}
else
{
// Value does not contain any special characters which needs to be wrapped/encoded/escaped
return $content;
}
}
echo getXMLContent("Hello little world!");
echo PHP_EOL . PHP_EOL;
echo getXMLContent("This <is> a & hard \" test ' for ]]> XML!");
?>
返回
Hello little world!
<![CDATA[This <is> a & hard " test ' for ]]]]><![CDATA[> XML!]]>
如果你把成XML結構是這樣的:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<test>
<![CDATA[This <is> a & hard " test ' for ]]]]><![CDATA[> XML!]]>
</test>
...保存它到一個文件(如test.xml)和ope ñ它與瀏覽器,你會看到,瀏覽器(或任何其他XML應用程序/解析器)會告訴你正確的輸出中的字符串:
This <is> a & hard " test ' for ]]> XML!
CDATA對於需要轉義的較大字符串也更具網絡友好性,因此在大多數情況下,XML文件將通過網絡傳輸時應使用IMO。 – 2014-03-10 20:48:48