到目前为止,我将文本放入CDATA标签,并通过将文本分成多个相邻的CDATA来处理文本中出现CDATA结尾的可能性。
我不确定这一点,但XML解析器无法保留CDATA标签内的换行符,对吗?这也意味着以某种方式逃避它们......
我想使用Perl生成这些XML文件,并使用C ++(使用expat),Java和C#解析它们。
最重要的是,我希望生成的文件在某种程度上是人类可读/可修改的。有谁知道任何符合这些需求的编码方案?我使用它来存储数据库的数据,因此它需要接受任意文本,并在解析时返回完全相同的文本。
答案 0 :(得分:1)
xml已经支持这个,你不需要做任何特别的事情,你当然不需要使用CDATA。只需使用一个像样的库,确保使用UTF-8编码,并添加一个文本节点。如果有什么东西“丢失”换行,那么这就是一个错误。 xml已经具有相对人类可读的“编码”(转义)。它也是标准,它比发明自己更有用。
答案 1 :(得分:0)
如果内容是HTML,则可以对内容进行编码:
<html><b>Bold Text</b></html>
VS
<html><![CDATA[<b>Bold Text</b>]]></html>
答案 2 :(得分:0)
嗯,据我所知,CDATA部分用于字符数据,控制字符不计算在内。我认为这意味着在换行问题上,XML解析器会判断它们是否是一个控制字符(历史上,是的,但是实际上......不。)。
虽然会损害可读性,但您可以使用转义序列对换行进行编码, 假设您正在正确转义,解析应该正确转换,您只需在编码时记下它。
完全违反“人类可读”要求的另一个选项是对文本进行base-64编码,这允许您对XML中的任意信息进行编码。