17370845950

XML中的转义字符有哪些 怎么处理特殊字符
XML中必须转义的字符只有5个:、&、"、',因它们具有语法含义,直接书写会破坏文档结构导致解析失败。

XML中必须转义的字符就5个:>&"'。它们分别对应 >&"'。直接写原字符会破坏结构,导致解析失败。

哪些字符必须转义

这五个字符在XML中有语法含义,不能当普通文本直写:

  • 是标签起始符,必须写成
  • > 多数情况下可不转义(除非紧跟 出现在 ]]> 或类似上下文),但为统一建议转成 >
  • & 表示实体开始,必须写成 &,否则像 © 会被误解析
  • " 在双引号包围的属性值里要转义为 ",否则提前闭合
  • ' 在单引号包围的属性值里要转义为 '

用CDATA段绕过转义

当一段内容里全是代码、HTML、SQL或大量符号时,手动逐个转义既麻烦又易错。用 最省心:

  • CDATA区内的所有字符原样保留,解析器完全不处理
  • 适合包裹 JavaScript、SQL 查询、配置片段等
  • 注意:不能嵌套,也不能出现连续字符串 ]]>,否则会意外截断
  • 示例:

属性值里巧用引号切换

属性本身支持单引号或双引号,灵活换用能少写很多转义:

  • 用双引号包属性,里面单引号不用转:
  • 用单引号包属性,里面双引号不用转:
  • 避免混用,比如 type="He said "Hi"" 会报错

编程时交给标准库自动处理

手写替换容易漏或错,推荐调用成熟工具:

  • Java:用 StringEscapeUtils.escapeXml11()(Apache Commons Text)或 XmlWriter 输出时自动转义
  • Python:用 xml.sax.saxutils.escape()
  • .NET:用 SecurityElement.Escape()XmlWriter 的 WriteElementString
  • DOM操作中,用 element.setTextContent() 而非 element.appendChild(textNode),前者会自动转义

基本上就这些。核心是:该转的5个字符别硬扛,该用CDATA的别死磕,该交程序的别手写。保持一致、依赖标准库,问题就很少反弹。