XML 文件中出现 & ? ? 这类特殊字符的一种解决方法(from blog.joycode.com/ghj)

类别:Asp 点击:0 评论:0 推荐:

        这几天在跟一个公司合作的项目中,对方提供了RSS接口,通过这个接口,在我们网站展现出来,但是对方RSS中出现了一些麻烦的字符,比如 &,®,™  等。这些字符放到XML中,如果不做特殊处理,就会有错误产生。比如下面的XML:

<item>&</item>

在IE 浏览器,以及一些解析用的DOM中解析这个片段,就会产生错误。

在W3C的技术规范中,也可以看到这样的字符不允许出现:
http://www.w3.org/TR/2001/REC-xml-c14n-20010315

比如:对 Text Nodes 允许的字符有如下要求: the string value, except all ampersands are replaced by &amp;, all open angle brackets (< ) are replaced by &lt;, all closing angle brackets (> ) are replaced by &gt;, and all #xD characters are replaced by &#xD;.

由于这些特殊字符比较多,我们在XML中替换的工作量比较大,我们可以在DTD文件中作些定义:

比如DTD文件中增加以下部分:

<!-- PERCENT SIGN -->
<!ENTITY amp "&#38;#38;">
<!-- COPYRIGHT SIGN -->
<!ENTITY reg "&#x00AE;">
<!-- REG TRADE MARK SIGN -->
<!ENTITY trade "&#x2122;">

并在XML中定义这个XML文件需要这个DTD支持:

<!DOCTYPE HeadCount SYSTEM "eula.dtd">

这样在XML文件中出现 & ® ™ 这类特殊字符就不会再报错了。

有关更多的特殊字符可以参看:

http://xml.coverpages.org/CourtDocument11-2002-05s-DTD.txt

那里罗列的特殊字符有近200个。

®

本文地址:http://com.8s8s.com/it/it7705.htm