【问题标题】:RSS Feed - Failed loading XML Start tag expected, '<' not foundRSS 提要 - 未能加载预期的 XML 开始标记,未找到“<”
【发布时间】:2015-12-17 17:58:05
【问题描述】:

我正在尝试使用标准 PHP 阅读器函数从 Sotheby's website 在我的网站上获取 RSS 提要,该函数使用 simplexml_load_file 和一个循环,但它不能正常工作。当我插入此代码时,我得到一个“加载 XML Start tag 失败,'

<?php
$url = 'http://apps.shareholder.com/rss/rss.aspx?channels=2908&companyid=BID&sh_auth=1184301877%2E0%2E0%2E42356%2E14434fd9e3fcb0c832c884fe9ff36e31';
libxml_use_internal_errors(true);
$sxe = simplexml_load_string($url);
if ($sxe === false) {
echo "Failed loading XML\n";
foreach(libxml_get_errors() as $error) {
echo "\t", $error->message;
}
}
print_r($rss);
?>

我尝试使用来自this posting 的 curl,但它只打印一个空的 pre 标签。

这是我使用的阅读器 PHP 代码...

<?php
$url = "http://apps.shareholder.com/rss/rss.aspx?channels=2908&companyid=BID&sh_auth=1184301877%2E0%2E0%2E42356%2E14434fd9e3fcb0c832c884fe9ff36e31";
$rss = simplexml_load_file($url);
if($rss)
{
$items = $rss->channel->item;
foreach($items as $item)

{
if($i==5) break;    
$title = $item->title;
$link = $item->link;
$published_on = $item->pubDate;
$description = $item->description;?>
<hr>                            
<div class="news-story">
<?php 
echo '<h3><a href="'.$link.'">'.$title.'</a></h3>';
echo '<span class="news-date">('.$published_on.')</span>';
?>

</div>
<?php
$i++;      
}
}
?>

这是我试图从中提取的Sotheby's news RSS feed

任何帮助或建议都会非常有帮助。谢谢!

编辑

感谢第四只鸟提到这个Stack question,它昨晚工作,但是当我今天检查时它停止工作......

<?php
$context  = stream_context_create(array('http' => array('header' => 'Accept: application/xml')));
$url = 'http://apps.shareholder.com/rss/rss.aspx?channels=2908&companyid=BID&sh_auth=1184301877%2E0%2E0%2E42356%2E14434fd9e3fcb0c832c884fe9ff36e31';

$xml = file_get_contents($url, false, $context);
$xml = simplexml_load_string($xml);
print_r($xml);
?>

这些是我在 MAMP php_error.log 中遇到的一些错误:

[2015 年 12 月 18 日 07:46:41 America/New_York] PHP 警告:simplexml_load_string():

标签: php rss rss-reader simplexml


【解决方案1】:

在您提供的第一个代码块中,您使用的是simplexml_load_string

手册将第一个参数描述为:

格式良好的 XML 字符串

在您的代码中,您正在传递一个 url。如果您想使用simplexml_load_string,这个问题的答案可能会对您有所帮助: Using SimpleXML to load remote URL

在您提供的第二个代码块中,您使用simplexml_load_file

手册将第一个参数描述为:

XML 文件的路径

如果我尝试第二个代码块中的代码,它会显示来自 RSS Feed 的数据,它只会给我这个 PHP 通知:

PHP 注意:未定义变量:i

【讨论】:

  • 你发给我的链接很好用!不过,我在从字符串中拉出某些元素时遇到了一些麻烦。我不想只显示标题、链接和日期的所有新闻提要 xml 内容。在单独的 php 文件上使用 simplexml_load_string,然后在该单独的 php 文件上使用 simplexml_load_file 来提取内容会更好吗?
  • 当您例如在浏览器中加载 rss url 时,您是否得到预期的响应?如果我使用您编辑的代码,那么我会在 print_r 中看到数据。
【解决方案2】:

实际上是在解析 XML 数据时导致 URL 中断的最后一部分。当我从 url 中删除 '&sh_auth=1184301877%2E0%2E0%2E42356%2E14434fd9e3fcb0c832c884fe9ff36e31' 时,我使用 simplexml_load_file() 发布的初始代码块运行良好,此后一直没有损坏。感谢第四只鸟的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多