Java:xml必须转义的字符

在 Java 处理 XML 时,必须转义的 5 个预定义实体字符如下:

  • `&` (和号) → 转义为 `&` (最核心,用于防止解析器误认实体开始)

  • `<` (小于号) → 转义为 `&lt;` (防止被误认为标签开始)

  • `>` (大于号) → 转义为 `&gt;` (防止被误认为标签结束,虽非严格强制但建议转义)

  • `"` (双引号) → 转义为 `&quot;` (仅在属性值中使用双引号包裹时需转义)

  • `'` (单引号) → 转义为 `'` (仅在属性值中使用单引号包裹时需转义)

关键注意事项

  • 严格性:`&` 和 `<` 在文本内容中必须转义,否则会导致 XML 解析错误;`>`、`"`、`'` 在特定上下文(如属性值)中才强制要求,但统一转义是最佳实践 。

  • 替代方案:若文本包含大量特殊字符(如代码片段),可使用 `<!CDATA\[ ... ]>` 区段包裹内容,区内字符无需转义,但区内不能包含 `]]>` 。

  • Java 实现建议:避免手动 `replace` 导致遗漏或顺序错误,优先使用标准库:

  • Apache Commons Text: `StringEscapeUtils.escapeXml11(input)`

  • DOM API: 通过 `Element.setTextContent()` 自动处理转义 。