到目前为止,我到目前为止将文本放入CDATA标记,并通过将其拆分成多个相邻的CDatas来处理文本中出现的CDATA结束的可能性。

我不确定这一点,但XML解析器无法保留CDATA标签内部的纽约,正确吗?这意味着不知何故逃脱它们......

我想使用perl生成这些XML文件,并使用C ++(使用Expat),Java和C#来解析它们。

最重要的是,我希望得到的文件有点人类可读/可修改。有谁知道任何适合这些需求的编码方案?我正在使用它来存储数据库的数据,因此需要接受任意文本,并且在解析时返回完全相同的文本。

有帮助吗?

解决方案

XML已经支持这一点,你不需要做任何特别的事情,你当然不需要使用cdata。只需使用一个体面库,请确保使用UTF-8编码,然后添加文本节点。如果某些东西是“失败”的纽丁,那么这是一个错误。XML已经有一个“编码”(逃逸),相对人性可读。它也是标准的,这使得它比发明自己更有用。

参见,例如 https://stackoverflow.com/a/1140802/181772

其他提示

如果内容为HTML,则可以编码内容:

<html>&lt;b&gt;Bold Text&lt;/b&gt;</html>
.

vs。

<html><![CDATA[<b>Bold Text</b>]]></html>
.

嗯,据我所知,CDATA部分是用于字符数据,并且控制字符不计算。我假设这意味着在纽诺斯的问题上,XML解析器会判断呼吁是否是控制字符或历史上(历史上,是的,但策略......)。

虽然它会损害可读性,但您可以使用转义序列编码纽单, 假设您正常逃脱,解析应该正确转换它,您只需要在编码时记下它。

完全违反“人类可读”要求的另一个选项是基本-64编码文本,这允许您在XML中编码任意信息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top