当前位置: 首页 > 面试题库 >

使用SimpleXML读取RSS提要

卢文博
2023-03-14
问题内容

我正在使用PHP和simpleXML来阅读以下rss feed:

http://feeds.bbci.co.uk/news/england/rss.xml

我可以这样获得大多数信息:

$rss = simplexml_load_file('http://feeds.bbci.co.uk/news/england/rss.xml');

echo '<h1>'. $rss->channel->title . '</h1>';

foreach ($rss->channel->item as $item) {
   echo '<h2><a href="'. $item->link .'">' . $item->title . "</a></h2>";
   echo "<p>" . $item->pubDate . "</p>";
   echo "<p>" . $item->description . "</p>";
}

但是我将如何输出以下标记中的缩略图:

<media:thumbnail width="66" height="49" url="http://news.bbcimg.co.uk/media/images/51078000/jpg/_51078953_226alanpotbury.jpg"/>

问题答案:

SimpleXML在处理名称空间方面非常糟糕。您有两种选择:最简单的技巧是将提要的内容简单地读入字符串并替换名称空间。

$feed = file_get_contents('http://feeds.bbci.co.uk/news/england/rss.xml');
$feed = str_replace('<media:', '<', $feed);

$rss = simplexml_load_string($feed);
...

现在,您可以thumbnail直接访问元素。

更为优雅(不是真的)的方法是找出名称空间使用的URI。如果您查看http://feeds.bbci.co.uk/news/england/rss.xml的源代码,则会看到它指向http://search.yahoo.com/mrss/

现在,您可以在children()SimpleXMLElement 的方法中使用此URI 来获取media:thumbnail元素的内容;

$rss = simplexml_load_file('http://feeds.bbci.co.uk/news/england/rss.xml');

foreach ($rss->channel->item as $item) {
    $media = $item->children('http://search.yahoo.com/mrss/');
    ...
}


 类似资料:
  • 问题内容: 我正在尝试使用他们的RSS feed和jquery显示我最新的stumbleupon项目的标题。我具有的功能是: 哪个什么都不返回…我只是想获取有关提要中 单个 最新项目的信息-我该怎么做? 问题答案: 这是有关如何使用JQuery进行跨域Ajax 的教程。

  • 我试图通过apache cordova获取rss提要并在移动设备上显示内容。但是,如果我不提供指向的url。xml文件,读取器不加载。例如 这不会加载,但如果我使用 它起作用了。下面是我正在使用的rss阅读器javascript文件: 在索引上。html页面: 任何帮助将不胜感激。我认为这与feed-reader.js中xml的实际解析有关,但不完全确定。 谢谢 更新: 我得到了预期的url,但当

  • 问题内容: 我在访问SimpleXML对象的部分时遇到问题。当我整个对象时,我得到正确的输出,而当我其余对象(嵌套标签)时,我得到正确的输出,但是当我遵循docs和时 ,我得到一个空对象,尽管事实是第一个清楚地表明,存在要输出的属性。 任何人都知道我在这里做错了/如何进行这项工作? 问题答案: 您可以通过在XML节点上调用attribute()函数来获取XML元素的属性。然后,您可以var_dum

  • 一款全部开源的rss阅读器,界面简单,功能强大! 采用的是.net+jquery实现,代码大小只有55k,配置要求只要支持.net2.0和iis服务就可以! 简介:由于安全问题,浏览器没有足够的权限来操作远程的xml,所以不得不借助服务器端来实现,所以提供了RssServer来解析xml,然后直接显示出来,再有jquery来操作配合css来显示,思路就是这样! 最后的效果:

  • 因此,我一直在使用Python3.2和OpenPyXL的iterable工作簿,如这里的“优化阅读器”示例所示。 当我尝试使用此策略读取从简单文档中提取的一个或多个文件时,就会出现问题。zip存档(手动和通过python zipfile包)。当我调用我得到“A”和我得到1,当要求打印每个单元格的值时,如下所示: 它打印A1、A2、A3、A4、A5、A6和A7中的值,而不管文件实际有多大。文件本身没

  • RSS 阅读器用于读取 RSS feed! RSS 阅读器可供许多不同的设备和操作系统使用。 RSS 阅读器 有很多不同的 RSS 阅读器。某些以 web services 的形式来工作,而某些则运行于 windows (或 Mac、PDA 或 UNIX)。 这是一些我尝试过并钟爱的阅读器: 这是一些我尝试过并钟爱的阅读器: RSS 阅读器 有很多不同的 RSS 阅读器。某些以 web servi