如何解决XML文件中特殊字符“& <”导致解析错误的问题

前端之家收集整理的这篇文章主要介绍了如何解决XML文件中特殊字符“& <”导致解析错误的问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
“&”与“<”这样的特殊字符直接放在XML元素中,会导致XML文件解析错误。如下所示:

  <salary>if salary < 1000 then</salary>

  <url>http://www.baidu.com/s?bs=zuozhuan&wd=%D7%F3%D7%AC</url>

前者的XML元素直接使用了小于号“<”,后者使用了和号“&”,这样的XML会产生解析错误。为避免此类错误,专业说法是用这些特殊字符的实体引用来代替。

正确的写法,小于号“<”应该用“&lt;”代替,和号“&”应该用“&amp;”代替,这两个字符必须用实体引用代替。

另外还有大于号、单引号和双引号,这3个特殊字符可以存在于XML中,不会引起解析错误,但是将他们分别替换为实体引用“&gt;”、“&apos;”、 “&quot;”是更加符合标准的语法。

再介绍一种解决此类解析错误方法:使用CDATA部件,前面的两个例子可以这么写:

  <salary><![CDATA[if salary < 1000 then]]></salary>

  <url><![CDATA[http://www.baidu.com/s?bs=zuozhuan&wd=%D7%F3%D7%AC]]></url>

原理就是CDATA部件包含的内容会被解析器忽略,CDATA区块由 <![CDATA[ 开始,以 ]]> 结束。CDATA区块内部不可以再出现 ]]> 这样的字符串,这也意味着CDATA部件禁止嵌套使用。

本文的两个例子使用实体引用比较合适。如果文本中间大量出现“<”“&”符号,例如一些条件判断的程序代码,逐一替换实体引用就不如直接用CDATA部件把整段代码包含起来更直观。

猜你在找的XML相关文章