<![CDATA[ ]]>和转义字符的使用

数据的解析

在正式开始聊CDATA之前想先说说解析
XML文件在解析的时候,里面的内容也同样会被解析,例如我们在用MyBatis时,在mapper.xml中可能会用到“<”或者“>”,这样就造成了一些冲突,例如下面的代码

<select id="selectBydate" parameterType="String" resultType="user">
         select * from user where create_date <= #{createDate} 
</select>

在这种情况下,解析器怎么去判断create_date < #{createDate}中的“<”是小于号,而不是表示一个标签的开始呢?

转义字符的处理

我们可以通过转义字符来处理XML文件中的特殊字符,常用的有:

转义字符符号含义
& lt;<小于号
& gt;>大于号
& amp;&
& apos;单引号
& quot;双引号

注:复制上面的转义字符时,把“&”后面的空格去掉。有看到网上说只有小于和&是不合法的,剩下的都是合法的,但还是推荐大家写转义。

把原本应该写符号的地方用转移字符代替,以“&”开头,以“;”结尾,中间没有空格
上面那段mapper就可以写成如下形式了:

<select id="selectBydate" parameterType="String" resultType="user">
         select * from user where create_date &lt;= #{createDate} 
</select>

这样解析器在解析的时候就会把“&lt;”当做“<”来处理。

< ![CDATA[]]>的使用

有趣的是markdown也支持 < ![CDATA[]]>的使用,如果我不在<后面加上空格,他就不会显示。

上面说了转义字符,那< ![CDATA[]]> 是做什么的呢?简单来说,他和转义字符的作用差不多,他告知解析器“< ![CDATA[“文本内容”]]> ”,”[]”中的内容都是我想要的,不要解析,不通过解析器去处理,他标记了其中的字符是纯文本

上面的代码如果用< ![CDATA[]]>处理可以写成:

<select id="selectBydate" parameterType="String" resultType="user">
         select * from user where create_date <![CDATA[<=]]> #{createDate} 
</select>

要注意的是< ![CDATA[]]>,“CDATA”是大写,且不能嵌套使用的,而且个人觉得嵌套使用也没什么意义。

在网上看到PCDATA,顺便提一下,他与CDATA的区别是什么呢?

CDATA是不交给解析器去处理,而PCDATA是交给解析器去处理。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值