XML中必须进行转义的字符

来源:互联网 发布:ubuntu输入法怎么用 编辑:程序博客网 时间:2024/05/16 17:30

最近写xml报文时,需要传递URL并且带多个参数,导致解析出现错误

编写XML代码经常遗漏的常识:

XML实体中不允许出现”&”,”<”,”>”等特殊字符,否则XML语法检查时将出错,如果编写的XML文件必须包含这些字符,则必须分别写成”&”,”<”,”>”再写入文件中。例如,如果在XML文档中使用类似”<” 的字符, 那么解析器将会出现错误,因为解析器会认为这是一个新元素的开始。所以不应该像下面那样书写代码:

Java代码:

<age> age < 30 </age>   

为了避免出现这种情况,必须将字符”<” 转换成实体,像下面这样:

Java代码:

<age> age &lt; 30 </age>  

在读取的时候,解析器会自动将其转换回”&”,”<”,”>”等特殊字符,正常来说,只有”<” 字符和”&”字符对于XML来说是严格禁止使用的。
需要注意的是:
a. 转义序列各字符间不能有空格;
b. 转义序列必须以”;”结束;
c. 单独的&不被认为是转义开始;
d. 区分大小写。

以下是XML中需要的转义字符:
&(逻辑与) &
<(小于) <

(大于) >
“(双引号) "
‘(单引号) '


    发现了XML里的CDATA属性,问题解决的一种办法!在XML文档中的所有文本都会被解析器解析。 只有在CDATA部件之内的文本会被解析器忽略。   CDATA部件在CDATA内部的所有内容都会被解析器忽略。如果文本包含了很多的"<"字符和"&"字符——就象程序代码一样,那么最好把他们都放到CDATA部件中。一个 CDATA 部件以"<![CDATA[" 标记开始,以"]]>"标记结束: <script> <![CDATA[ function matchwo(a,b) { if (a < b && a < 0) then { return 1 } else { return 0 } } ]]> </script> 在前面的例子中,所有在CDATA部件之间的文本都会被解析器忽略。 CDATA注意事项: CDATA部件之间不能再包含CDATA部件(不能嵌套)。如果CDATA部件包含了字符"]]>" 或者"<![CDATA[" ,将很有可能出错哦。同样要注意在字符串"]]>"之间没有空格或者换行符

转载地址:http://jaenson.iteye.com/blog/945469
http://blog.csdn.net/lihualiu81/article/details/6231177

原创粉丝点击