XML中必须转义的5个基础字符是

XML文件中,小于号()、与符号(&)、双引号(")和单引号(')这5个字符有特殊含义,直接写入会导致解析失败。必须用对应的XML实体引用替换,否则文档会报错或被截断。
必须转义的5个基础字符
XML规范强制要求以下字符在文本内容和属性值中必须转义,否则解析器无法正确识别标签结构:
- 替代
(避免被误认为标签开始) -
> 替代
>(虽多数解析器允许不转义,但为兼容性建议统一处理) -
& 替代
&(防止被当作实体引用起始符) -
" 替代
"(仅在属性值使用双引号定界时必需) -
' 替代
'(仅在属性值使用单引号定界时必需)
属性值中的引号处理规则
属性值必须用引号包裹,且引号类型决定需转义的字符:
- 若用双引号包围属性值(
name="John & Jane"),则内部的"必须写成",&必须写成& - 若用单引号包围(
name='John & Jane'),则内部的'必须写成',&同样要写成& - 不推荐混用或省略引号——XML不允许无引号的属性值
常见误区与安全提醒
很多开发者误以为只有 和 & 需转义,其实只要出现在文本或属性中,上述5个字符都应按规则处理:
- 中文标点如《》、&、”、’ 不是XML特殊字符,无需转义(它们属于普通Unicode字符)
- 不要用HTML实体如
或©—— XML默认只认识5个预定义实体,其他需自行声明DTD或使用数值字符引用(如©) - 程序生成XML时,务必对用户输入做转义(例如Java用
StringEscapeUtils.escapeXml11(),Python用xml.sax.saxutils.escape())
数值字符引用:补充方案
当需要表达任意Unicode字符(包括未定义命名实体的字符),可用数值引用:
- 十进制:
A表示字母 A - 十六进制:
☺表示 ☺ 符号 - 注意:数值引用也需遵循上下文规则,比如
可替代,但不能简化书写逻辑







