XML 中的 <![CDATA[ ]]>
因为这个是xml格式的,所以不允许出现类似“>”这样的字符
CDATA 全名:character data。所有 XML 文档中的文本均会被解析器解析,除了 CDATA 区段(CDATA section)中的文本会被解析器忽略。
CDATA的形式如下: <![CDATA[文本内容]]> 。
CDATA的文本内容中不能出现字符串**“]]>”**。另外,CDATA不能嵌套。
XML 实例: 在CDATA标记中的信息被解析器原封不动地传给应用程序,并且不解析该段信息中的任何控制标记。 CDATA区域是由 <![CDATA[ 为开始标记,以 ]]> 为结束标记,注意CDATA为大写。
QDom 解析 xml 中的CDATA
<Data>
<![CDATA[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]]>
</Data>
例如:
<select id="getRecords" resultType="com.domain.zft.contentmanage.model.vo.SysNoticeVO">
SELECT
csn.*,
sc.`cityname` AS city_name,
CASE
WHEN (csn.effective_time <![CDATA[<=]]> now() AND csn.fail_time <![CDATA[>=]]> now()) THEN
'生效'
ELSE
'失效'
END status_name,
su.`name` AS update_by_name
FROM
`conm_sys_notice` AS csn
LEFT JOIN sys_organization AS so ON so.id = csn.city_id
AND so.is_deleted = 0
LEFT JOIN sys_city AS sc ON sc.id = so.relation_id
AND sc.is_deleted = 0
LEFT JOIN sys_user AS su ON su.id = csn.update_by
<trim prefix="WHERE" prefixOverrides="AND |OR ">
csn.is_deleted = 0
<if test="cityId != null" >
AND
csn.city_id = #{cityId}
</if>
<if test="title != null and title != ''" >
AND
csn.title LIKE concat ('%', #{title}, '%')
</if>
<if test="status != null and status != ''" >
/* 1 代表生效 */
<if test="status == 1">
AND
(csn.effective_time <![CDATA[<=]]> now() AND csn.fail_time <![CDATA[>=]]> now())
</if>
/* 2 代表失效 */
<if test="status == 2">
AND
(csn.effective_time <![CDATA[>=]]> now() OR csn.fail_time <![CDATA[<=]]> now())
</if>
</if>
</trim>
ORDER BY
csn.id DESC
<if test="offset != null and pageSize != null">
limit #{offset}, #{pageSize}
</if>
</select>
第二种方法:
用了转义字符把>和<替换掉,然后就没有问题了。
XML转义字符