XML 文件中出现 & ® ™ 这类特殊字符的一种解决方法(from blog.joycode.com/ghj)
2004-12-15 11:31
681 查看
这几天在跟一个公司合作的项目中,对方提供了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 &, all open angle brackets (< ) are replaced by <, all closing angle brackets (> ) are replaced by >, and all #xD characters are replaced by .
由于这些特殊字符比较多,我们在XML中替换的工作量比较大,我们可以在DTD文件中作些定义:
比如DTD文件中增加以下部分:
<!-- PERCENT SIGN -->
<!ENTITY amp "&">
<!-- COPYRIGHT SIGN -->
<!ENTITY reg "®">
<!-- REG TRADE MARK SIGN -->
<!ENTITY trade "™">
并在XML中定义这个XML文件需要这个DTD支持:
<!DOCTYPE HeadCount SYSTEM "eula.dtd">
这样在XML文件中出现 & ® ™ 这类特殊字符就不会再报错了。
有关更多的特殊字符可以参看:
http://xml.coverpages.org/CourtDocument11-2002-05s-DTD.txt
那里罗列的特殊字符有近200个。
®
<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 &, all open angle brackets (< ) are replaced by <, all closing angle brackets (> ) are replaced by >, and all #xD characters are replaced by .
由于这些特殊字符比较多,我们在XML中替换的工作量比较大,我们可以在DTD文件中作些定义:
比如DTD文件中增加以下部分:
<!-- PERCENT SIGN -->
<!ENTITY amp "&">
<!-- COPYRIGHT SIGN -->
<!ENTITY reg "®">
<!-- REG TRADE MARK SIGN -->
<!ENTITY trade "™">
并在XML中定义这个XML文件需要这个DTD支持:
<!DOCTYPE HeadCount SYSTEM "eula.dtd">
这样在XML文件中出现 & ® ™ 这类特殊字符就不会再报错了。
有关更多的特殊字符可以参看:
http://xml.coverpages.org/CourtDocument11-2002-05s-DTD.txt
那里罗列的特殊字符有近200个。
®
相关文章推荐
- XML 文件中出现 & ? ? 这类特殊字符的一种解决方法
- web.config文件中出现特殊字符的解决方法
- XML中特殊字符出现乱码的解决方法
- xslt生成xml出现特殊字符Â处理方法
- ajax/post/gb2312特殊字符出现乱码完美解决方法
- pom.xml项目文件中出现web.xml is missing and <failOnMissingWebXml> is set to true解决方法
- 【笔记】CCS4 出现 warning: entry-point symbol other than "_c_int00" specified: "code_start" 的解决方法
- .NET:关于byte数组在用StreamWriter文件写出后出现多余字符的解决方法及VS方案文件图标显示问题
- sax解析xml的特殊字符解决方法
- url 传递参数(特殊字符)解决方法
- Service部署到服务器后出现"The test form is only available for requests from the local machine"解决方法
- Failed to read schema document 'http://code.alibabatech.com/schema/dubbo/dubbo.xsd'问题解决方法
- 关于使用dom4j生成xml时特殊字符处理的解决方法
- url参数中出现+,&,?,',%,#,=,空格等字符的解决方法
- 【已解决】GET方法的参数中处理URL特殊字符&%等
- Qt中QFtp获取带有中文的文件名称出现乱码的解决方法(比较巧妙,toLatin1压缩掉了QString自动给每个英文字符加上的那些00字节)
- 使用 StackTrace 获得更多跟 Exception 有关的信息 --http://blog.joycode.com/ghj/archive/2008/03/05/114925.aspx
- Service部署到服务器后出现"The test form is only available for requests from the local machine"解决方法
- CentOS6.5安装nginx1.5.8时出现“cp: "conf/koi-win" 与"/usr/local/nginx/conf/koi-win" 为同一文件”的解决方法
- ComFailException:can't co-create object.错误的猜测的一种解决方法