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

解決:用 把 加括號 包裹起來或使用 &<;

正確寫法

where ei.no = #{no} and ==<![CDATA[qi.quote_time < pi.pricing_time]]>

探究XML中CDATA與轉義字符

對於 :
所有 XML 文檔中的文本均會被解析器解析。只有 CDATA 區段(CDATA section)中的文本會被解析器忽略。

轉義字符:
非法的 XML 字符必須被替換為實體引用(entity reference)。

XML 中5 個預定義的實體引用:
XML 中5 個預定義的實體引用
嚴格地講,在 XML 中僅有字符 "<"和"&" 是非法的。省略號、引號和大於號是合法的,但是把它們替換為實體引用是個好的習慣。

使用注意:

CDATA 部分不能包含字符串 "]]>"。也不允許嵌套的 CDATA 部分。
標記 CDATA 部分結尾的 "]]>" 不能包含空格或折行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM