我应该把xml中节点的值保存在<中吗?如果包含特殊字符,请输入[CDATA[]]


Should I keep the value of a node in a xml inside a <! [CDATA []] if it contains special characters?

我正在创建一个DOMDocument。

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

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

"未终止实体引用 øð "

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

谢谢。

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

来源:我在一家出版公司工作。他们会收到带有不合适字符的XML文件,而我必须遍历文件并删除XML中的无效字符并用其他字符替换它们。有时,不幸的是,这是一个漫长而乏味的任务。您必须确保向您发送XML文件的人没有包含无效字符,如果包含无效字符,您可能不得不亲自检查文件并删除它们。您可以通过编写java程序来删除字符,但问题是,它可能无法捕获所有无效字符。如果您捕获异常,大多数时候您应该能够查看异常,并使用您正在使用的解析器查看无效字符的位置,并且它可能包含该无效字符的字节码。我建议您使用TextPad查找无效字符,因为您可以按字节搜索,您可以找到"隐藏"字符,否则您将不会在另一个文本编辑器中看到。

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