org.xml.sax.SAXParseException 在 springmodule.xml 文件中由于数据库密码中的“&”

org.xml.sax.SAXParseException in springmodule.xml file due to '&' in DB password

提问人:Nidhi257 提问时间:8/4/2023 最后编辑:Nidhi257 更新时间:8/4/2023 访问量:44

问:

我在springmodule.xml文件中出现以下错误

类路径资源[springmodule.xml]的XML文档中的第128行无效;嵌套异常是 org.xml.sax.SAXParseException;行号:128;列号:50;实体名称必须紧跟在实体引用中的“&”之后。

这是因为我的数据库密码包含“&”符号。 我在 pom.xml 文件中遇到了同样的错误,因此将“&”替换为 ',但在 xml 文件中如何替换相同的错误。&

我们可以在这里使用任何字符串函数将“&”替换为?&

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
        <property name="url" value="${DB_URL}"/>
        <property name="username" value="${DB_USER}"/>
        <property name="password" value="${DB_PASS}"/>
    </bean>
Java Spring Maven XML 解析

评论

0赞 Jens 8/4/2023
不要对 spring 使用旧的过时的 xml 配置。使用更现代的 java 配置
0赞 Jens 8/4/2023
您是否尝试过使用密码?此 shud 由 XML 解析器替换&amp;&
0赞 Nidhi257 8/4/2023
密码存储在从其他源获取的变量DB_PASS中
0赞 Samuel Marchant 8/4/2023
简而言之,你是说,为了让 bean 能够加载属性值,它读取一个 XML 文档,最简单的方法是在 XML 文档值中使用 & 并在 get 或 set 中过滤任何 XML 字符实体的属性(replace)!
0赞 Samuel Marchant 8/4/2023
编写一个 Bean 帮助程序方法,将带有 XML 实体的 XML 元素值(对于非法的 XML 字符)转换回 set 或 get 中的自然字符串形式,比为每个元素编写一个 XSLT 来检索,通过映射和标记将值中的实体转换为 Bean 的属性更明智。

答:

0赞 Nidhi257 8/4/2023 #1

这对我有用:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
        <property name="url" value="${DB_URL}"/>
        <property name="username" value="${DB_USER}"/>
        <property name="password">
        <value><![CDATA[${DB_PASS}]]></value>
    </property>
    </bean>