xml配置文件中特殊字符的处理

问题

在项目开发中,使用到了ibatis作为项目的数据库访问持久层。在sqlmap的XML配置文件中编写一条SQL语句时,遇到这样的问题:where条件中包括了判断出生日期在某一段时间内。
刚开始我是这么写的


             A.CSRQ>=#ageBeginTime#


           A.CSRQ<=#ageEndTime#
 

此时IDE就报出了配置出错的信息
通过查阅资料,明白是判断条件中的大于>和小于<出错,它会使XML解析器产生混淆。也就像JSON格式中出现双引号会使得格式出错的场景。
那么解决办法,也就是对大于和小于进行转义,将大于号>改为>、小于号<改为<
另外在查阅资料中,在看别人写的SQL中,使用到的是下面这种方法来防止特殊字符的。

 
            =#ageBeginTime# ]]>
 
 
            
 

通过来解决此问题。
当时没有深究,也就这么用了。后来今天在一本书看到了关于此问题更详细的描述。

处理方式

在XML中有5个特殊的字段,分别是: & < > " '
如果XML配置文件中的注入值包括这一些特殊字符的话,就需要特别的处理。
处理方式有两种:
1、使用这个标签将包括特殊字符的注入值封装起来
2、使用XML转义序列表示这些特殊字符

五个符号的转义序列如下:

  • 小于号<对应的是<
  • 大于号>对应的是>
  • 联结符&对应的是&
  • 双引号"对应的是"
  • 单引号'对应的是'

备注

在MarkDown中为防止>被直接解析成了;,可以采用`符号将其包裹起来。

你可能感兴趣的:(xml配置文件中特殊字符的处理)