、&、"、',否则会破坏文档结构或导致解析失败。必须用对应的XM..."/>

XML中的特殊字符怎么转义 XML实体引用方法

22次阅读

xml中需用预定义实体(zuojiankuohaophpcn、youjiankuohaophpcn、&、”、’)转义5个特殊字符,其余字符用数字引用,CDATA区可避免转义但不可嵌套。

XML中的特殊字符怎么转义 XML实体引用方法

XML中不能直接使用某些特殊字符,比如 >&"',否则会破坏文档结构或导致解析失败。必须用对应的XML实体引用(也叫字符引用)来代替。

必须转义的5个预定义实体

XML标准预先定义了5个实体,用于表示最常冲突的字符:

  • zuojiankuohaophpcn → 表示 (小于号)
  • youjiankuohaophpcn → 表示 >(大于号)
  • & → 表示 &(&符号本身)
  • " → 表示 "(双引号,常用于属性值中)
  • ' → 表示 '(单引号,也用于属性值)

注意:' 在XML 1.0中是标准实体,但部分老解析器(如某些html解析器)可能不支持;若兼容性要求高,可用 '(十进制字符引用)替代。

其他字符用数字字符引用

除上述5个外,其余字符(如中文、版权符©、欧元€等)不能用命名实体表示,需用数字字符引用:

  • 十进制格式: 表示 Unicode 码位 U+4E2D(“中”字)
  • 十六进制格式:© 表示 ©(U+00A9)

只要确保文档声明了正确的编码(如 ),数字引用就能准确还原字符。

CDATA区:绕过转义的替代方案

当一段内容含大量特殊字符(如代码片段、HTML文本),逐个转义很繁琐。可改用 区块:

0) { alert(“OK!”); }]]>

CDATA区内所有字符(包括 &)都按原样处理,不会被解析为标记。但注意:CDATA不能嵌套,且不能包含字符串 ]]>(需拆分或转义)。

实际编写建议

多数现代编程语言的XML库(如java的JAXB、python的xml.etree.ElementTree、C#的XmlDocument)会自动转义输出内容,无需手动处理。但以下情况需特别留意:

  • 手写XML文件时,务必对 &> 做转义(属性值中还要处理引号)
  • 拼接字符串生成XML时,避免直接拼接用户输入——应调用库的转义方法(如 Python 的 xml.sax.saxutils.escape()
  • 在XSLT或XPath中使用字符串常量时,引号需匹配:双引号属性内用 ',单引号属性内用 "
text=ZqhQzanResources