XML中必须转义的字符只有5个:、&、"、',因它们具有语法含义,直接书写会破坏文档结构导致解析失败。
XML中必须转义的字符就5个:、>、&、"、'。它们分别对应 、>、&、"、'。直接写原字符会破坏结构,导致解析失败。
这五个字符在XML中有语法含义,不能当普通文本直写:
是标签起始符,必须写成 > 多数情况下可不转义(除非紧跟 出现在 ]]> 或类似上下文),但为统一建议转成 >
& 表示实体开始,必须写成 &,否则像 © 会被误解析" 在双引号包围的属性值里要转义为 ",否则提前闭合' 在单引号包围的属性值里要转义为 '
当一段内容里全是代码、HTML、SQL或大量符号时,手动逐个转义既麻烦又易错。用 最省心:
]]>,否则会意外截断
属性本身支持单引号或双引号,灵活换用能少写很多转义:
type="He said "Hi"" 会报错手写替换容易漏或错,推荐调用成熟工具:
StringEscapeUtils.escapeXml11()(Apache Commons Text)或 XmlWriter 输出时自动转义xml.sax.saxutils.escape()
SecurityE
lement.Escape() 或 XmlWriter 的 WriteElementStringelement.setTextContent() 而非 element.appendChild(textNode),前者会自动转义基本上就这些。核心是:该转的5个字符别硬扛,该用CDATA的别死磕,该交程序的别手写。保持一致、依赖标准库,问题就很少反弹。