如何从GOOGLE AJAX Feed API获取新闻项目的描述

时间:2012-02-26 12:32:15

标签: javascript jquery ajax feed google-feed-api

我使用Google AJAX Feed API使用脚本从不同来源加载新闻。如何获得条目的描述?以下是一个问候世界计划:

<html>
  <head>
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript">

    google.load("feeds", "1");

    function initialize() {
      var feed = new google.feeds.Feed("http://news.google.com/?output=rss");
      feed.load(function(result) {
        if (!result.error) {
          var container = document.getElementById("feed");
          for (var i = 0; i < result.feed.entries.length; i++) {
            var entry = result.feed.entries[i];
            var div = document.createElement("div");
            div.appendChild(document.createTextNode(entry.title));
            container.appendChild(div);
          }
        }
      });
    }
    google.setOnLoadCallback(initialize);

    </script>
  </head>
  <body>
    <div id="feed"></div>
  </body>
</html>

如何使用entry对象获取描述?我使用谷歌URL - http://news.google.com/?output=rss用于XML格式的RSS源。我想要“描述”部分。我怎么能得到那个

4 个答案:

答案 0 :(得分:3)

您可以获取描述,但不能使用JSON格式和entry对象来执行此操作。如果您仔细阅读https://developers.google.com/feed/v1/devguide处的Feed参数,您会看到description不是它在入门级返回的字段 - 只是在Feed级别。

为此,您需要以XML格式请求Feed,然后加载各个节点,包括description。以下是我用过的相关代码段 - 根据需要更改格式等。

function initialize() {
   var feed = new google.feeds.Feed("http://myblog.com/blog/feed/");
   feed.setResultFormat(google.feeds.Feed.XML_FORMAT);
   feed.load(function(result) {
   if (!result.error) {
    var items = result.xmlDocument.getElementsByTagName('item');
    item = items[0];

    //build each element
    var title = document.createElement("h4");
    title.innerHTML = item.getElementsByTagName('title')[0].firstChild.nodeValue;

    var content = document.createElement("p");
    content.innerHTML = item.getElementsByTagName('description')[0].firstChild.nodeValue;

    href = item.getElementsByTagName('link')[0].firstChild.nodeValue;
   }

答案 1 :(得分:2)

可以使用内容变量检索HTML描述。 因此你应该: div.appendChild(document.createTextNode(entry.content));

请注意,这将检索HTML数据格式。

答案 2 :(得分:1)

经过大量挖掘后,我发现Google API使用“contentSnippet”而不是说明。不需要XML格式。

function initialize() {
    var feed = new google.feeds.Feed("http://myblog.com/blog/feed/");   
    feed.setNumEntries(10);
    feed.load(function(result) {
        if (!result.error) {

            $(document).ready(function(){   
                $('#feed-pull').append('<ul></ul>'); 
                for (var i = 0; i < result.feed.entries.length; i++) {
                    var entry = result.feed.entries[i];                     
                    var desc = entry.contentSnippet;

答案 3 :(得分:-1)

更改entry.title in:

div.appendChild(document.createTextNode(entry.title));

到entry.description。