数组没有从rss feed解析器中提取所有数据

时间:2016-03-29 18:29:30

标签: jquery arrays xml rss feed

我正在构建一个rss接收器,那里有很多很棒的资源,但实际上没有一个是SOURCE而不是AUTHOR。当我尝试编辑代码以拉动SOURCE时,它显示为UNDEFINED。我在.rss文件中看到了SOURCE,但是当我在控制台中分析对象时,它实际上并没有检索到SOURCE数据字段。

以下是我要编辑的代码:

function parseRSS(url, container) {
  $.ajax({
    url: 'http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&callback=?&q=' + encodeURIComponent(url),
    dataType: 'json',
    success: function(data) {
      console.log(data.responseData.feed);
      $(container).html('<h2>'+capitaliseFirstLetter(data.responseData.feed.title)+'</h2>');

      $.each(data.responseData.feed.entries, function(key, value){
        var thehtml = '<h3><a href="'+value.link+'" target="_blank">'+value.title+'</a></h3><br/>' +value.source ;
        $(container).append(thehtml);
      });
    }
  });
}

function capitaliseFirstLetter(string) {
    return string.charAt(0).toUpperCase() + string.slice(1);
}

这是我的.rss xml树:

RSS XML TREE: See the SOURCE node is there like all the rest

这是控制台对象:

console object array showing that SOURCE is not being read by the parser

非常感谢任何帮助!谢谢!

1 个答案:

答案 0 :(得分:0)

您可以获取XML文档并对其进行解析。然后你控制你所看到的但看不到的东西。

我认为使用服务的问题在于他们选择暴露的内容,看起来源不是其中之一。我刚刚决定获取xml文档并自己解析它(下面的示例 - 需要php)。我希望这可以帮助你。 我通过卷曲xml文档然后使用SimpleXMLElement将其转换为xml文档来获取源代码 - 然后您可以非常轻松地遍历它:

<?php

function get_data($url) {
    $ch = curl_init();
    $timeout = 5;
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}

$sXML = get_data('http://newsdesk-feeds.moreover.com/feed/a60eeb8d9fcdc35b.rss');
//$sXML = get_data('http://alanstorm.com/atom');

echo $sXML;
$oXML = new SimpleXMLElement($sXML);

foreach($oXML->channel->item as $oEntry){
    echo "<div style='background: red;'>". $oEntry->source . "</div>"; // your source

}

这是检查过的DOM。你真的可以得到你想要的任何东西。还有一些库可能会把它变成JSON给你。尽管如此,自己也不难做到。

enter image description here

以下是来源的输出:

enter image description here