The reference to entity "characterEncoding" must end with the ';' delimiter.

本文针对Java应用程序中出现的XML配置文件解析错误进行了详细说明,并提供了解决方案。具体错误为XML文档中的引用实体未以分号结尾。文章还介绍了如何正确配置数据库URL参数以及XML特殊字符的转义规则。

Java 解析XML文件错误。

错误信息提示代码类似如下

The reference to entity "characterEncoding" must end with the ';' delimiter.
org.xml.sax.SAXParseException: The reference to entity "characterEncoding" must end with the ';' delimiter.

 ontext initialization failed
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 9 in XML document from ServletContext resource [/WEB-INF/applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException: The reference to entity "characterEncoding" must end with the ';' delimiter.

 

纠错结果:

我在配置一个访问数据库的Url时,第一次设置的内容如下:

jdbc:mysql://localhost:3306/photo?useUnicode=true&characterEncoding=UTF-8,注意中间那个“&”,在xml中这个是读不出的哦,那么应该怎么改呢?我采取了一个折衷的方法,不过真的可以了:

jdbc:mysql://localhost:3306/photo?useUnicode=true&characterEncoding=UTF-8

分析:

有时候在使用xml作为配置文件的时候,应该要使用xml的编码规则来进行适当的设置。

下面给出xml中一些特殊符号的编码转换:

 

 &lt; < 小于号
 &gt; > 大于号
 &amp; & and字符
 &apos; ' 单引号
 &quot; " 双引号
### MyBatis Generator 中 XML 解析错误的解决方案 当使用 MyBatis Generator (MBG) 时,如果遇到 `XMLParserException` 提示 `allowMultiQueries missing semicolon` 的问题,这通常是因为生成器配置文件中的 SQL 配置部分存在问题。具体来说,可能是由于未正确处理多查询语句或多行字符串引起的。 #### 原因分析 在 Java 数据库连接中,`allowMultiQueries=true` 是用于支持单次执行多个 SQL 查询的关键参数之一。然而,在 MBG 的上下文中,如果该属性被误写或者其值未按照预期格式化,则可能导致解析失败[^1]。例如: - 如果允许多查询的设置缺少必要的分号 (`;`) 或者其他语法不匹配的情况发生。 - 当前使用的数据库驱动程序可能无法识别某些特殊字符序列(如换行符),从而引发异常。 #### 解决方法 以下是几种常见的解决策略来应对这个问题: ##### 方法一:修改 JDBC URL 参数 确保 JDBC 连接字符串中包含了正确的 `allowMultiQueries` 设置,并且以标准方式结束每条命令。例如对于 MySQL 数据源而言,可以这样定义你的数据源路径: ```properties jdbc:mysql://localhost:3306/your_database_name?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowMultiQueries=true; ``` 注意这里的最后有一个明确的分号作为终止标记;如果没有它就可能会触发类似的错误消息提示缺失分号[^2]。 ##### 方法二:调整插件行为 如果你正在利用自定义脚本来扩展默认功能的话,请仔细检查这些额外逻辑是否会干扰到基础框架的操作流程。特别是那些涉及动态拼接SQL片段的地方——它们往往容易成为潜在隐患所在之处。 另外还可以尝试通过增加特定选项来自定义生成过程的行为模式。比如启用下面这样的全局属性声明可以帮助我们更好地控制输出结果的质量: ```xml <property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"/> <property name="trimStrings" value="true"/> ``` 以上代码片段展示了如何指定一个合适的代码格式化工作者以及开启自动修剪空白的功能,这两项措施都有助于减少不必要的副作用并提高最终产物的一致性和可读性水平[^3]。 ##### 方法三:验证输入模型结构的有效性 有时即使所有的外部依赖都已经妥善安排好了之后仍然会出现莫名其妙的问题,这时候就需要回过头去重新审视一下原始的数据表设计方案本身是否存在缺陷了。比如说复合主键的设计是否合理?外键关联关系有没有遗漏掉重要的约束条件等等这些问题都值得深入探讨一番才行。 同时也要记得定期清理项目工作区内的临时缓存文件夹以防万一旧版本残留物影响到了新构建出来的组件之间的协作效果哦! --- ### 示例代码展示 这里给出一段简单的例子用来演示上述提到的一些技巧的实际应用情况: 假设我们现在要针对名为 "users" 表创建相应的 DAO 接口及其映射规则文件,那么完整的 generatorConfig.xml 文件大致如下所示: ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <!-- Database connection settings --> <context id="DB2Tables" targetRuntime="MyBatis3Simple"> <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=utf8mb4&allowMultiQueries=true;" userId="root" password=""> </jdbcConnection> <!-- Additional properties to enhance generation quality --> <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/> <commentGenerator suppressDate=true/> <!-- Table selection and mapping rules --> <table tableName="users" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" /> <!-- Formatting preferences --> <property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"/> <property name="trimStrings" value="true"/> </context> </generatorConfiguration> ``` 此配置不仅设置了恰当的JDBC链接地址还启用了几个实用的小工具以便进一步优化整个开发体验。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值