MyBatis异常:元素内容必须由格式正确的字符数据或标记组成
Posted 坐而言 不如起而行
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis异常:元素内容必须由格式正确的字符数据或标记组成相关的知识,希望对你有一定的参考价值。
今天在写接口查询SQL时,报了一个异常,如下:
Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 242; 元素内容必须由格式正确的字符数据或标记组成。
经查资料,发现是由于查询语句中"<"和">"引起的,在mybatis映射文件中直接使用这些运算符会引起解析错误,跟标签冲突。
==错误部分sql==
where ei.no = #{no} and qi.quote_time < pi.pricing_time
解决:用 <[CDATA[ ]]> 把 加括号 包裹起来或使用 &<;
==正确写法==
where ei.no = #{no} and ==<![CDATA[qi.quote_time < pi.pricing_time]]>
探究XML中CDATA与转义字符
对于<[CDATA[ ]]>:
所有 XML 文档中的文本均会被解析器解析。只有 CDATA 区段(CDATA section)中的文本会被解析器忽略。
转义字符:
非法的 XML 字符必须被替换为实体引用(entity reference)。
XML 中5 个预定义的实体引用:
严格地讲,在 XML 中仅有字符 "<"和"&" 是非法的。省略号、引号和大于号是合法的,但是把它们替换为实体引用是个好的习惯。
<[CDATA[ ]]>使用注意:
CDATA 部分不能包含字符串 "]]>"。也不允许嵌套的 CDATA 部分。
标记 CDATA 部分结尾的 "]]>" 不能包含空格或折行。
以上是关于MyBatis异常:元素内容必须由格式正确的字符数据或标记组成的主要内容,如果未能解决你的问题,请参考以下文章
mybatis注解sql <script></script> 报错提示:元素内容必须由格式正确的字符数据或标记组成
javascript error 元素的内容必须由格式良好的字符数据或博客中的标记组成
大于 > 小于 < inside thymeleaf javascript... 错误:元素的内容必须由格式良好的字符数据或标记组成