在 Java 处理 XML 时,必须转义的 5 个预定义实体字符如下:
-
`&` (和号) → 转义为 `&` (最核心,用于防止解析器误认实体开始)
-
`<` (小于号) → 转义为 `<` (防止被误认为标签开始)
-
`>` (大于号) → 转义为 `>` (防止被误认为标签结束,虽非严格强制但建议转义)
-
`"` (双引号) → 转义为 `"` (仅在属性值中使用双引号包裹时需转义)
-
`'` (单引号) → 转义为 `'` (仅在属性值中使用单引号包裹时需转义)
关键注意事项
-
严格性:`&` 和 `<` 在文本内容中必须转义,否则会导致 XML 解析错误;`>`、`"`、`'` 在特定上下文(如属性值)中才强制要求,但统一转义是最佳实践 。
-
替代方案:若文本包含大量特殊字符(如代码片段),可使用 `<!CDATA\[ ... ]>` 区段包裹内容,区内字符无需转义,但区内不能包含 `]]>` 。
-
Java 实现建议:避免手动 `replace` 导致遗漏或顺序错误,优先使用标准库:
-
Apache Commons Text: `StringEscapeUtils.escapeXml11(input)`
-
DOM API: 通过 `Element.setTextContent()` 自动处理转义 。