首页 > 其他 > 详细

<![CDATA[]]>和转义字符

时间:2020-11-26 11:24:21      阅读:22      评论:0      收藏:0      [点我收藏+]

<![CDATA[]]>和转义字符

今天看代码发现之前从没见过的<![CDATA[]]>,遂来学习下


<![CDATA[]]>是什么

<![CDATA[]]> 是什么,这是XML语法。在CDATA内部的所有内容都会被解析器忽略。

<![CDATA[]]>干什么

在使用mybatis 时我们sql是写在xml 映射文件中,如果写的sql中有一些特殊的字符的话,比如"<"、">"、"&"、如果我们直接使用,XML语法检查会报错。

于是<![CDATA[]]>应运而生,他包起来的内容都会被解析器忽略

  • 案例:

    <select ...>
        ...
        where  time > #{startTime}
    </select>
    

    上面写法会报错,正确写法应该是

    • 方式一:<![CDATA[]]>
    <select ...>
        ...
        where <![CDATA[time > #{startTime}]]> 
    </select>
    
    • 方式二:转义字符
    <select ...>
        ...
        where  time &lt #{startTime}
    </select>
    

<![CDATA[]]>注意点

 在XML中,需要转义的字符有:

字符 转义字符
& &amp
< &lt
> &gt
" &quot
&apos

但是严格来说,在XML中只有”<”和”&”是非法的,其它三个都是可以合法存在的,但是,把它们都进行转义是一个好的习惯。


不管怎么样,转义前的字符也好,转义后的字符也好,都会被xml解析器解析,为了方便起见,使用<![CDATA[]]>来包含不被xml解析器解析的内容。但要注意的是:

  • 此部分不能再包含”]]>”
  • 不允许嵌套使用;
  • ]]>”这部分不能包含空格或者换行。

<![CDATA[]]>和转义字符的关系

最后,说说<![CDATA[]]>和xml转义字符的关系,它们两个看起来是不是感觉功能重复了?

是的,它们的功能就是一样的,只是应用场景和需求有些不同:

  • <![CDATA[]]>不能适用所有情况,转义字符可以;
  • 对于短字符串<![CDATA[]]>写起来啰嗦,对于长字符串转义字符写起来可读性差;
  • <![CDATA[]]>表示xml解析器忽略解析,所以更快。

参考

https://blog.csdn.net/qh_java/article/details/50755655?utm_source=copy

https://blog.csdn.net/u012050416/article/details/51768735?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.control

<![CDATA[]]>和转义字符

原文:https://www.cnblogs.com/ciweiyu/p/14040676.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!