XML 文件中出現 & ? ? 這類特殊字符的一種解決方法

       這幾天在跟一個公司合作的項目中,對方提供了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個。

®

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章