如何了解 <![CDATA[ ]]>的作用?
2017-12-10 20:20
190 查看
看下面一段XML,其目的在于得到表达式
settlementDateBeg<=settlement_date<=settlementDateEnd
[html] view
plain copy
<if test="null!=req.settlementDateBeg and ''!=req.settlementDateBeg">
and settlement_date <![CDATA[>=]]>#{req.settlementDateBeg}
</if>
<if test="null!=req.settlementDateEnd and ''!=req.settlementDateEnd">
and settlement_date <![CDATA[<=]]>#{req.settlementDateEnd}
</if>
若不使用<![CDATA[ ]]> 标识,则文中标红部分会被XML解析,则得不到需要的结果,这儿是由于
在 XML 元素中,"<" 和 "&" 是非法的。
"<" 会产生错误,因为解析器会把该字符解释为新元素的开始。
"&" 也会产生错误,因为解析器会把该字符解释为字符实体的开始。
而使用<![CDATA[ ]]> 标识之后,CDATA[。。。。。。。。 ]中的内容则不会被解析,其作用类似于js中或C中的转义字符。
最后:
CDATA 部分不能包含字符串 "]]>"。也不允许嵌套的 CDATA 部分。
标记 CDATA 部分结尾的 "]]>" 不能包含空格或折行。
settlementDateBeg<=settlement_date<=settlementDateEnd
[html] view
plain copy
<if test="null!=req.settlementDateBeg and ''!=req.settlementDateBeg">
and settlement_date <![CDATA[>=]]>#{req.settlementDateBeg}
</if>
<if test="null!=req.settlementDateEnd and ''!=req.settlementDateEnd">
and settlement_date <![CDATA[<=]]>#{req.settlementDateEnd}
</if>
若不使用<![CDATA[ ]]> 标识,则文中标红部分会被XML解析,则得不到需要的结果,这儿是由于
在 XML 元素中,"<" 和 "&" 是非法的。
"<" 会产生错误,因为解析器会把该字符解释为新元素的开始。
"&" 也会产生错误,因为解析器会把该字符解释为字符实体的开始。
而使用<![CDATA[ ]]> 标识之后,CDATA[。。。。。。。。 ]中的内容则不会被解析,其作用类似于js中或C中的转义字符。
最后:
CDATA 部分不能包含字符串 "]]>"。也不允许嵌套的 CDATA 部分。
标记 CDATA 部分结尾的 "]]>" 不能包含空格或折行。
相关文章推荐
- mybatis 模糊查询和<![CDATA[ ]]>的作用
- mybatis 模糊查询和<![CDATA[ ]]>的作用
- mybatis <![CDATA[ ]]>的作用、使用、注意事项。
- linux命令中的 < 和 |、>符号作用就解释
- <context-param>与<init-param>的区别与作用
- JSP中<base href="<%=basePath%>">作用
- 通过项目逐步深入了解Mybatis<一>
- web.xml里<filter-mapping>中的<dispatcher>作用
- 【<meta name="" content=">】的作用
- android中<requestFocus />作用
- <context-param>与<init-param>的区别与作用
- 在<table>或<div>中如何让传入的文本自动换行
- 如何将List<Long>转long[]
- java如何获取jsp页面上传的文件路径 20 前台jsp: <form action="AA.do?method=yktAdd" method="post" > <input type='text'
- <谷歌如何测试>
- HTML: <a> target属性以及如何在JS实现相同效果
- #include <stdlib.h> 这个头文件是什么作用?
- MVVM模式下如何使用ReactiveCocoa响应链式编程<一>
- 如何使用<identity impersonate="true"/>
- HTML中<meta>标签的描述和作用