逃避“&”,“>”是否正确和“<”与&,>和<用XML?

时间:2017-01-04 19:19:00

标签: xml encode entities

如果我使用数字实体而不是通常推荐的alpha实体用于XML中的保留字符,那会有什么“破坏”吗?

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

原始程序员(现在已经很久......)决定对所有无法在所选编码中表示的字符使用数字实体。 XML保留的字符在任何编码下都被视为不可表示。它们被给予相同的处理并使用数字实体进行编码。

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

如果我可以避免挖掘遗留代码来改变这种行为,那么它将为我节省大量资源。

1 个答案:

答案 0 :(得分:6)

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

来自spec(强调我的):

  

&符号(&)和左尖括号(<)不得   以字面形式出现,除非用作标记分隔符,   或在评论,处理指令或CDATA部分内。如果   它们在别处需要,必须使用 数字进行转义   字符引用 或字符串“&”和“<”   分别。可以使用以下来表示右尖括号(>)   字符串“>”,为了兼容性,必须使用其中任何一个进行转义   字符“>”中出现的“]]>”或字符引用   在内容中,当该字符串未标记CDATA的结尾时   部分。

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

& = & = &

< = < = <

> = > = >