我想知道在XML文档中的CDATA部分中是否有任何方法可以转义CDATA结束标记(
基本上,您能否将开始或结束标记嵌入到CDATA中,并告诉解析器不要解释它,而是将其视为另一个字符序列。
如果您发现自己试图这样做,那么很可能应该重新设计您的XML结构或代码,但是尽管我过去3年左右每天都在处理XML,却从未遇到过这个问题,因此我想知道是否可能。只是出于好奇。
编辑:
除了使用HTML编码之外...
]]>
)。或者更一般地说,是否存在用于在CDATA内部使用的转义序列(但如果存在的话,我猜可能只有转义开始或结束标记才有意义)。基本上,您能否将开始或结束标记嵌入到CDATA中,并告诉解析器不要解释它,而是将其视为另一个字符序列。
如果您发现自己试图这样做,那么很可能应该重新设计您的XML结构或代码,但是尽管我过去3年左右每天都在处理XML,却从未遇到过这个问题,因此我想知道是否可能。只是出于好奇。
编辑:
除了使用HTML编码之外...
>
编码为>
并不会阻止嵌入式]]>
被解析为CDEnd。这只是意味着这种情况是出乎意料的,并且必须首先将&
编码为&
,以便数据可以被正确解码。文档的用户也必须知道如何解码该CData。这并不罕见,因为CData的部分目的是包含特定使用者知道如何处理的内容。这样的CData不能期望被任何通用的消费者正确地解释。 - nixCDATA
的设计目的是允许_任何东西_:它们用于转义包含否则会被识别为标记的字符块的文本。这也意味着CDATA
,因为它也是标记。但实际上,您不需要我暗示的双重编码。]]>
是在CDATA
中编码CDEnd
的可接受方法。 - nix