解析XML时出错:对实体“version”的引用必须以';'结尾分隔符

时间:2014-06-05 20:52:18

标签: javascript facebook-like

我对此很新,很抱歉,如果这是一个简单的问题。

我正在尝试将FB框安装到我的网站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.

3 个答案:

答案 0 :(得分:39)

看起来有些事情是将您的文档解释为XML而不是HTML。 XML比HTML更严格 - 其中一个规则是&符号(&)具有特殊含义。他们的意思是&#34;这里有一个XML实体&#34;,这是一个特殊的角色。例如,您可以键入&quot;以插入",或&gt;以插入&gt;进入你的文件。

在这种情况下,您的代码将第6行的&version解释为其中一个实体的开头。如果您按如下方式更新第6行:

js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&amp;version=v2.0";

然后你会发现错误消失了。

答案 1 :(得分:4)

我自己就是这个问题。上面的答案没有解决问题。 Facebook按钮无法加载。下面是我实现的解决方案,用于解决服务器上显示的500错误,然后允许正确加载按钮。

问题在于,如果您使用的是像Thymeleaf这样使用XML的东西。必须正确形成添加到页面的HTML。 &amp;如果在页面中使用当前版本,将导致页面加载失败并显示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>

答案 2 :(得分:0)

您是否将代码放在标签下? 因为那是需要放置的地方。