XML中的CDATA与转义字符是不是功能有重叠

1:CDATA人类写起来爽
2:CDATA机器parse起来快
3:但是CDATA不能保存任意字符串,所以极端情况下还得靠转义
【XML中的CDATA与转义字符是不是功能有重叠】 4:如果字符串太短CDATA写起来有特别啰嗦
所以你去掉哪个都不行,不过如果只是为了保留正确性的话,CDATA是可以去掉的,配合xml:space的使用即可。

■网友
对应不同的需求
■网友
是的,是重叠的。
但不等价。CDATA无法完全替代实体引用(\u0026amp;..;)。
CDATA的出现仅仅是给我们提供了方便,例如:一个文本节点出现大量的特殊字符(\u0026lt; \u0026gt; \u0026#39; " \u0026amp;等)时,使用实体引用使得文档变得更占存储;而使用CDATA只要在文本节点头尾加标识符即可。
个人认为,CDATA是对实体引用的补充,所以实体引用可以替代CDATA,但CDATA不能完全替代实体引用。
情况1:实体引用可以出现在属性值,而CDATA不行。
\t\u0026lt;script a="a\u0026amp;lt;a"\u0026gt;\u0026lt;/script\u0026gt;上面的属性值看似奇怪,但的确能被正确解析
XML中的CDATA与转义字符是不是功能有重叠

情况2:CDATA有局限,CDATA内部不能出现字符串 ]]\u0026gt;,在这种情况在还是要用实体引用。


    推荐阅读