属性中包含未转义的&符号怎么办? XML属性值的编码规范与实例

XML属性值中需转义的特殊字符有5个:&必须写为&,,"写为"(属性用双引号时),'写为'(属性用单引号时),正确编码可避免解析错误。

XML 属性值中如果包含未转义的 & 符号,会导致解析错误,因为解析器会将其视为实体引用的开始。为确保 XML 文档结构正确,必须对特殊字符进行编码处理。

哪些字符需要转义?

在 XML 属性值中,以下五个字符具有特殊含义,需使用对应的预定义实体引用:
  • & → &(最常见,用于避免解析错误)
  • (小于号)
  • > → youjiankuohaophpcn(大于号,在属性中通常可不转义,但建议统一处理)
  • " → "(双引号,当属性用双引号包围时必须转义)
  • ' → '(单引号,当属性用单引号包围时必须转义)

正确编码示例

假设有一个产品标签,名称为 "C++ & Java 入门",直接写入属性会导致错误:
 
正确做法是将 & 替换为 &
 

再比如,属性中包含双引号:

这里使用 " 转义了内部的双引号,避免与属性边界冲突。

如何避免出错?

编写或生成 XML 时,建议:
  • 始终通过支持 XML 的库(如 Python 的 xml.etree.ElementTree、Java 的 JAXB)生成内容,这些库会自动处理转义。
  • 手动编辑时,查找所有 & 并确认其是否为实体引用(如 zuojiankuohaophpcn),否则必须替换为 &。
  • 验证 XML 是否良好格式化,可使用在线校验工具或 XML 解析器测试。

基本上就这些。只要把 & 写成 &,其他特殊字符也做对应处理,就能避免大多数属性编码问题。