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

springmodule.xml中因数据库密码含&引发SAXParseException的解决咨询

解决Spring XML中密码含&导致的解析错误

核心原因

XML语法里&是特殊字符,必须转义为&才能被正确解析。你之前在pom.xml中用&是因为Maven的pom会做二次转义,但Spring XML仅需单次转义,不需要双重处理。

具体解决方案

根据你的配置场景,分三种方式处理:

1. 外部properties文件配置(当前${DB_PASS}场景)

如果DB_PASS定义在.properties配置文件中,不需要在properties里转义&,直接写原始密码(比如pass&123)即可。Spring加载占位符时会自动处理XML特殊字符,不会触发解析错误。

2. XML硬编码密码

如果是直接在XML里写死密码,必须把&替换为&:

<property name="password" value="pass&amp;123"/>

3. Spring EL动态转义(兜底方案)

如果无法修改原始密码配置,可通过Spring表达式语言动态替换&:

<property name="password" value="#{T(java.lang.String).valueOf('${DB_PASS}').replace('&', '&amp;')}"/>

优先推荐前两种更简洁的方式,此方案仅作为特殊场景的备选。

注意事项

  • 不要沿用pom.xml的&amp;amp;写法,Spring XML只会解析一次转义,双重转义会让最终密码出现&amp;而非原始的&。
  • 若使用Spring Boot,建议将数据库配置放在application.properties或application.yml中,YAML对特殊字符的兼容性更好,直接写&即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 01:46:08