1. 程式人生 > >使用 標識 使內容不被XML解析

使用 標識 使內容不被XML解析

看下面一段XML,其目的在於得到表示式

settlementDateBeg<=settlement_date<=settlementDateEnd

<if test="null!=req.settlementDateBeg and ''!=req.settlementDateBeg">
   and settlement_date <![CDATA[>=]]>#{req.settlementDateBeg}
</if>
	            
 <if test="null!=req.settlementDateEnd and ''!=req.settlementDateEnd">
   and settlement_date <![CDATA[<=]]>#{req.settlementDateEnd}
</if>


若不使用<![CDATA[ ]]> 標識,則文中標紅部分會被XML解析,則得不到需要的結果,這兒是由於

在 XML 元素中,"<" 和 "&" 是非法的。

"<" 會產生錯誤,因為解析器會把該字元解釋為新元素的開始。

"&" 也會產生錯誤,因為解析器會把該字元解釋為字元實體的開始。


而使用<![CDATA[ ]]> 標識之後,CDATA[。。。。。。。。 ]中的內容則不會被解析,其作用類似於js中或C中的轉義字元。

最後:

CDATA 部分不能包含字串 "]]>"。也不允許巢狀的 CDATA 部分。

標記 CDATA 部分結尾的 "]]>" 不能包含空格或折行。