mybatis映射文件中不能使用">""

原因是 XML 文檔中放置了一個類似 “<” 字符,那麼這個文檔會產生一個錯誤,這是因爲解析器會把它解釋爲新元素的開始。因此你不能這樣寫:

<if test="ageStart = null and ageEnd != null ">
  and (o.patient_age <= #{ageEnd,jdbcType=TIMESTAMP} )
</if>

正確的寫法是這樣:

<if test="ageStart = null and ageEnd != null ">
   and (o.patient_age <![CDATA[ <= ]]>  #{ageEnd,jdbcType=TIMESTAMP} )
</if>

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

  • 術語 CDATA 指的是不應由 XML 解析器進行解析的文本數據(Unparsed Character Data)。
  • 在 XML 元素中,”<” 和 “&” 是非法的。
  • “<” 會產生錯誤,因爲解析器會把該字符解釋爲新元素的開始。
  • “&” 也會產生錯誤,因爲解析器會把該字符解釋爲字符實體的開始。
  • 某些文本,比如 JavaScript 代碼,包含大量 “<” 或 “&” 字符。爲了避免錯誤,可以將腳本代碼定義爲 CDATA。
    CDATA 部分中的所有內容都會被解析器忽略。
<script>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0) then
  {
  return 1;
  }
else
  {
  return 0;
  }
}
]]>
</script>
  • 在 XML 中有 5 個預定義的實體引用:
&lt;        <       小於
&gt;        >       大於
&amp;       &       和號
&apos;      '       省略號
&quot;      "       引號

註釋:嚴格地講,在 XML 中僅有字符 “<”和”&” 是非法的。省略號、引號和大於號是合法的,但是把它們替換爲實體引用是個好的習慣。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章