帝国论坛帝国网站管理系统交流区帝国CMS使用交流[分享]自己mark一下 关于xml特殊符号报错EntityRef: expecting ';' 【本版专题贴子】  
主题:[分享]自己mark一下 关于xml特殊符号报错EntityRef: expecting ';' [加入收藏夹]   

jy129056
用户头衔:举人

精华贴   :0
发贴数   :176
经验值   :1165
注册时间:2007-11-02
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 1 楼]
[分享]自己mark一下 关于xml特殊符号报错EntityRef: expecting ';'
xml解析器在遇到字符“&”时,会把“&”当做一个实体引用的开始,而去寻找这个实体引用的结束符号“;”,

在xml文档中,像“&”这样的预定义的实体引用一共有5个,分别是“&”、“<”、“>”、“'”、“"”。

解决方法一:
把实体引用编码后使用,即
把“&” 编码为 “&amp;”
把“<” 编码为“&lt;”
把“>” 编码为 “&gt;”
把“'” 编码为 “&apos;”
把“"” 编码为 “&quot;”

<loc>url&mb=bt</loc>

替换为:

<loc>url&amp;mb=bt</loc>

解决方法二:
在标记CDATA中,所有的标记、实体引用都被忽略,而被“xml解析器”一视同仁地当做原始字符数据看待,CDATA的形式如下:<![CDATA[文本内容]]>
针对本文上面的问题,即把原来代码中的:

<loc>url&mb=bt</loc>

替换为:

<loc><![CDATA[url&mb=bt]]></loc>

使用CDATA需要注意的两点,一:由于CDATA的结束符号是“]]>”,所以CDATA中不能包含“]]>”,

二:由于CDATA中的所有标记、实体引用都被忽略,所以CDATA不能嵌套使用。




2015-03-15 18:43:07 已设置保密 顶部 回复 引用 报告 编辑 删除

pmume
用户头衔:探花

精华贴   :0
发贴数   :3758
经验值   :10108
注册时间:2009-12-22
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 2 楼]

总结的不错




东坡网 DP1037.com

帝国CMS二次开发、插件定制、性能优化、帝国站群

QQ:2253145337 帝国站长互助QQ群:308293433

2015-03-15 20:42:22 已设置保密 顶部 回复 引用 报告 编辑 删除

麦蒂
用户头衔:探花

精华贴   :0
发贴数   :6368
经验值   :17545
注册时间:2009-03-06
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 3 楼]

不错,支持




2015-03-16 08:18:02 已设置保密 顶部 回复 引用 报告 编辑 删除

快速回复
内容

表情
使用EBB代码 使用smile代码 显示签名 自动分析url 自动分析img
     【进入高级模式】   (按 Ctrl+Enter 直接提交)
    顶部  加入收藏夹
关于帝国 | 广告服务 | 联系我们 | 法律声明 | 隐私条款 | 许可协议
Powered by: EBB Version 2.2.1