2

我的客户想将我的 xml 文件写为<name>Smith & Jones</name>,而不是<name>Smith &amp; Jones</name>.

我找不到讨论这个的质量参考。

4

4 回答 4

7

XML 规范(§2.4)

和号字符 (&) 和左尖括号 (<) 仅在用作标记分隔符或在注释、处理指令或 CDATA 部分中时才能以它们的文字形式出现。它们在内部实体声明的文字实体值内也是合法的;请参阅“4.3.2 格式良好的解析实体”。如果在其他地方需要它们,则必须分别使用数字字符引用或字符串“&”和“<”对它们进行转义。

由于这种情况不属于上述任何类别,因此是非法的。

于 2012-08-27T15:32:00.230 回答
6

使用 CDDATA 标记在 XML 标记中插入这些字符,而不用 XML 解析它们:

<name>Smith & Jones</name>

变成

<name><![CDATA[ Smith & Jones ]]></name>

这样,您也可以将纯 html 与 xml 放在一起。

示例:http ://www.w3schools.com/xml/xml_cdata.asp

于 2012-08-27T15:35:40.200 回答
3

你不能,至少如果你想继续调用你的文件“XML”。XML 不允许未转义的 & 符号,并且任何符合标准的解析器都会将带有它们的文件视为“格式不正确”而拒绝。

您可以使用 CDATA,但这会带来自己的丑陋,并且大多数序列化程序默认情况下不会生成 CDATA。

于 2012-08-27T15:33:32.350 回答
2

XML 规范清楚地表明这不是格式良好的 XML。

如果你想知道为什么规范是这样写的,那总是一个更难回答的问题。有时(但这次不是)Tim Bray 在http://www.xml.com/axml/testaxml.htm上的 XML 建议的注释版本提供了一些启示。有时(但不是这次)http://www.w3.org/TR/1998/REC-xml-19980210.xml规范的 XML 源代码中的注释和其他注释具有启发性。在没有这些线索的情况下,回想一下 XML 的创建者非常渴望保持与 SGML 的兼容性,并且他们通常倾向于使用能够检测 XML 中的错误而不是使 XML 易于编写的解析器是有用的。

于 2012-08-27T19:30:35.370 回答