如果节点的值在<! - [CDATA []]中,如果它包含特殊字符,我应该保留吗? - >

时间:2014-05-03 13:30:55

标签: php xml encoding domdocument cdata

我正在创建一个DOMDocument。

问题很简单,我有一个XML,它有一个节点名<productName>

如果我想创建一个xml并且该值包含一个特殊的字符,如çøðé&,我就无法创建xml,因为该应用程序会抛出异常

  

“未终止的实体参考çøðé”

但我知道问题是char "&",我应该做什么,将char编码为&amp;并解码它,如果我想绘制值或我应该设置值<! [CDATA []]

谢谢。

1 个答案:

答案 0 :(得分:0)

&amp;是正确的方法,然后在导入xml文档或在代码中自动解码时,必须手动编辑它。 CData的问题在于,如果您使用的是XML解析器库(我强烈建议您使用XML解析器库),这将不会被解析。

资料来源:我曾在一家出版公司工作过。他们会收到带有不正确字符的XML文件,我将不得不浏览该文件并删除XML中的无效字符并将其替换为其他字符。偶尔,遗憾的是,这是一项漫长而乏味的任务。您必须确保向您发送XML文件的人员不包含无效字符,如果是,您可能不得不经历文件并自行删除它们的不幸任务。您可以通过编写一个java程序来为您删除字符,但问题是,它可能无法捕获所有无效字符。如果您捕获异常,大多数情况下您应该能够查看异常并查看无效字符与您正在使用的解析器的位置,并且可能包含该无效字符的字节代码。我建议您使用TextPad查找无效字符,因为您可以按字节搜索,您可以找到&#34; hidden&#34;您在其他文本编辑器中看不到的字符。

您可能还遇到一些非常大的文件太大而无法打开的情况。在这种情况下,您必须拆分文件才能查看它们(如果您要创建自己的XML结构,则很可能需要创建自己的XML拆分器)。