【问题标题】:SimplePie Getting an invalid XML documentSimplePie 获取无效的 XML 文档
【发布时间】:2012-12-13 06:15:41
【问题描述】:

我正在使用一个非常酷的 php 库(不管它叫什么),名为 SimplePie。我正在使用最新版本。

我有这个代码:

$url = 'http://www.seobook.com/feeds.shtml';
$SimplePieFeed->set_feed_url($url);
$SimplePieFeed->force_feed(true);
$SimplePieFeed->enable_order_by_date(true);
$success = $SimplePieFeed->init();
if( !$SimplePieFeed->error() ) {
    foreach( $SimplePieFeed->get_items() as $item ) {
      ......
    }
} else {
    print_r( $SimplePieFeed->error() );
}

为什么我在运行这段代码时会遇到这种错误:

此 XML 文档无效,可能是由于字符无效。 XML 错误:第 8 行第 76 列的格式不正确(令牌无效)

我尝试在Simplepie's demo 上运行这个,一切顺利。为什么当我最终运行它时会出现这种错误?是因为缓存吗?我注意到 Simplepie 将提要存储在缓存中。我已经尝试过$SimplePieFeed->enable_cache(false);,但我仍然收到该错误。我什至不确定这是否与这种错误有关。哈哈!

您的帮助将不胜感激和奖励! :非常感谢!

【问题讨论】:

  • 不同的站点使用不同的请求头。如果您不想比较所有这些,第一步是获取 实际 提要 URL:seobook.com/rss.xml - 至少 XML 验证然后:validator.w3.org/appc/…
  • @hakre 这是一个用户输入,你知道如何确保用户输入的是一个实际的 Feed URL 吗?
  • 来自 $SimplePieFeed->force_feed(true);我将其更改为 $SimplePieFeed->force_feed(false) 然后错误消失了。但我仍然不满意这背后的原因。我有一种感觉,这样做会得到不一致的结果。嗯...
  • 该设置启用自动发现。去吧,它是一个用户友好的变体,慷慨的输入。这样做你不会得到不一致的结果,它多年来经过了相当多的考验。
  • 好吧。哈哈!这很好笑。感谢您的回答。我以为你是 SimplePie 开发团队的一员,因为每次我问到 SimplePie 问题时,你总是不断回答。哈哈! :)

标签: php xml-parsing simplepie


【解决方案1】:

你的xml文件有问题,你应该重新制作.xml文件,如果你使用wordpress简单的使用插件,称为google站点地图,它非常好。

如果您使用其他东西,例如 php 或 html 基础站点,您应该制作有效的 xml 文档生成器,例如列出的 here

xml-sitemaps.com
xmlgrid.net   (editor viewer)
web-site-map.com

可能对您的情况有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多