You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JDK8默认Transformer对br空元素XML输出格式变更合规性咨询

核心结论

你的理解存在两处偏差,<br/>是完全合规的XML格式,不存在违反规范的问题:

  1. 你记错了空白字符的要求位置:XML规范中空元素标签的语法规则明确,可选的空白字符只能出现在斜杠的左侧(也就是标签名/最后一个属性与斜杠之间),斜杠和右侧的闭合大于号之间不允许出现任何字符——如果真的在/和>之间加空格,反而会生成不合法的XML。
  2. 斜杠左侧的空白字符是可选而非强制要求,也就是说<br/>和<br />两种写法都是规范明确认可的合法空元素写法,所有符合标准的XML解析器对两种写法的处理语义完全一致,没有任何区别。
JDK版本行为变更说明
  • JDK 8 u292输出无空格的<br/>、u332输出带空格的<br />,纯粹是内置XML序列化器的输出风格调整,不属于合规性修复,两种输出都是完全合法的XML。
  • 这个调整本质是兼容性优化:带空格的空元素写法可以被上世纪90年代的部分老旧HTML4兼容解析器正确识别,不会把标签名误判为br/,属于面向极端老旧场景的兼容策略调整,不涉及XML规范符合性的变化。
  • 注意:如果你的业务代码是通过字符串硬匹配的方式识别空标签,这个序列化风格变化确实可能导致逻辑异常,但这种依赖XML序列化字符串细节的写法本身就不符合XML处理的最佳实践,正规处理应当通过XML解析器读取DOM结构完成判断,不要依赖序列化输出的无意义空白差异。

内容的提问来源于stack exchange,提问作者mjn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 18:09:22