在一次查看testng的xml测试报告中发现有大量使用<![CDATA[ ]]>这个标签,所以就好奇这个标签是干什么用的。其实这个标签常见于xml文件中,是xml中一种特殊的标签,用于包含不需要解析的文本数据。下面我们深入了解<![CDATA[ ]]>这个标签的使用和其在xml中的重要性。
CDATA是"Character Data"(字符数据)的缩写,是一种在XML文档中包含纯文本数据的方法。它的语法格式如下:
<![CDATA[ Your Text Here ]]>
CDATA标签内的文本数据不会被XML解析器处理,而是会原样输出。这对于包含特殊字符或大段文本数据的XML元素非常有用。
包含特殊字符: 当XML文档中的文本数据包含像 <、>、& 等特殊字符时,使用CDATA标签可以确保这些字符不会被错误地解析。
大段文本数据: 如果XML元素包含大量文本数据,使用CDATA标签可以提高文件的可读性,避免在文本中添加大量转义字符。
代码块: 在某些情况下,XML文档可能包含代码块或脚本。CDATA标签可以确保这些代码块不会被解析,而是作为纯文本输出。
例1:
考虑以下XML片段,其中包含一个包含特殊字符的文本数据:
<description><![CDATA[This is a <b>bold</b> statement & more]]></description>
在这个例子中,CDATA标签确保包含在元素中的文本数据被原样输出,而不会影响XML解析的正确性。
例2:
<![CDATA[ ]]>标签在mybatis等书写sql的xml中也比较常见,在该标签中的语句是什么样的,拼接后的sql还是什么样的。
使用:
select * from user
where isDeleted = 0
<if test=" age != 0 ">
<![CDATA[ and age < 18 ]]>
</if>
如上SQL :遇到 < 特殊字符需要转义为<,因为有的特殊字符xml不识别,会直接报异常,因此会使用到 <![CDATA[ ]]> ,由它包裹的SQL和特殊字符将忽略转义,最后拼接为SQL语句:
select * from user where isDeleted = 0 and age < 18
注意: