解析 XML 时出错:对实体“版本”的引用必须以“;”结尾分隔符[重复]
Posted
技术标签:
【中文标题】解析 XML 时出错:对实体“版本”的引用必须以“;”结尾分隔符[重复]【英文标题】:Error parsing XML : The reference to entity "version" must end with the ';' delimiter [duplicate] 【发布时间】:2014-07-27 00:42:30 【问题描述】:我对此很陌生,如果这是一个简单的问题,我很抱歉。
我正在尝试将 FB like 框安装到我的网站 www.thehungryeurasian.com
但是,当我尝试插入 javascript SDK 时:
<div id="fb-root"></div>
<script>(function(d, s, id)
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.0";
fjs.parentNode.insertBefore(js, fjs);
(document, 'script', 'facebook-jssdk'));</script>
出现以下错误:
Error parsing XML, line 884, column 64:
The reference to entity "version" must end with the ';' delimiter.
【问题讨论】:
它在某种意义上是重复的,但我敢打赌,大量的百里香开发人员在这种情况下会遇到这个错误,即复制粘贴 fb 代码。我建议您保留这个问题,因为它对于非常具体和非常常见的问题非常有用 【参考方案1】:看起来有些东西正在将您的文档解释为 XML 而不是 html。 XML 比 HTML 严格得多 - 规则之一是 & 符号 (&
) 具有特殊含义。它们的意思是“这里有一个 XML 实体”,这是一个特殊字符。例如,您可以键入&quot;
以插入"
,或键入&gt;
以将> 插入到您的文档中。
在这种情况下,您的代码将第 6 行的 &version
解释为这些实体之一的开始。如果您按如下方式更新第 6 行:
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.0";
然后您应该会发现错误消失了。
【讨论】:
非常感谢!不仅是为了解决问题,还教我一些新东西! 是的,在我的情况下,当我将它替换为 &它奏效了【参考方案2】:我自己也遇到了这个问题。上面的答案没有解决问题。 Facebook 按钮不会加载。下面是我为解决服务器上出现的 500 错误并允许正确加载按钮而实施的修复。
问题在于,如果您使用的是 Thymeleaf 之类的使用 XML 的东西。添加到页面的 HTML 格式必须正确。如果在页面中使用当前版本,& 将导致页面加载失败并出现 500 错误。
当前为按钮添加 Javascript SDK 的方法。关注我们,点赞等...
<div id="fb-root"></div>
<script>(function(d, s, id)
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.3";
fjs.parentNode.insertBefore(js, fjs);
(document, 'script', 'facebook-jssdk'));</script>
需要增强以配合更严格的 XML 检查。此增强功能将允许正确转义 XML 数据并注释 CDATA 适用于旧版浏览器。
<div id="fb-root"></div>
<script>
/* <![CDATA[ */
(function(d, s, id)
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.3";
fjs.parentNode.insertBefore(js, fjs);
(document, 'script', 'facebook-jssdk'));
/* ]]> */
</script>
【讨论】:
【参考方案3】:你把代码放在标签下面了吗? 因为那是它需要放置的地方。
【讨论】:
感谢您这么快回复我。我没有'' 标签,虽然我有''。我能找到的最接近的是 '' 所以我把它直接放在下面?以上是关于解析 XML 时出错:对实体“版本”的引用必须以“;”结尾分隔符[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Java stax:对实体“R”的引用必须以“;”结尾分隔符
对实体 "useSSL" 的引用必须以 ';' 分隔符结尾。