在XML中用&、>和<转义“&”、“>”和“<”是否正确?

Is it correct to escape "&", ">" and "<" with &#38;, &#62; and &#60; in XML?

如果我对 XML 中的保留字符使用数字实体而不是通常推荐的字母实体,会有什么 "break" 吗?

这是一个相当复杂的应用程序的一部分,允许用户通过 XML、CSV 或基于网络的表单输入书目元数据。 然后可以使用用户选择的编码 XML(使用 ONIX 标准)提取此数据:utf-8、win-1252 等

最初的程序员(现在早已不复存在...)决定对所有无法在所选编码中表示的字符使用数字实体。 XML-保留字符在任何编码下都被认为是不可表示的。它们被给予相同的处理,并使用数字实体进行编码。

有些用户抱怨 &、<、> 等被编码为 & 等,而不是使用通常的 alpha 代码,我想知道这些投诉是否有任何实质内容。

如果我能避免挖掘遗留代码来改变这种行为,那会为我节省很多资源。

是的,可以使用数字字符引用进行转义。

来自 spec(强调我的):

The ampersand character (&) and the left angle bracket (<) must not appear in their literal form, except when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section. If they are needed elsewhere, they must be escaped using either numeric character references or the strings "&amp;" and "&lt;" respectively. The right angle bracket (>) may be represented using the string "&gt;", and must, for compatibility, be escaped using either "&gt;" or a character reference when it appears in the string "]]>" in content, when that string is not marking the end of a CDATA section.

您也可以使用十六进制实体引用...

&amp; = &#38; = &#x26;

&lt; = &#60; = &#x3C;

&gt; = &#62; = &#x3E;