Как получить описание новостного элемента из GOOGLE AJAX Feed API - PullRequest
3 голосов
/ 26 февраля 2012

Я использую скрипт для загрузки новостей из разных источников, используя Google AJAX feed API.Как я могу получить описание записи?Ниже приведена программа Hello World:

<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 Google - http://news.google.com/?output=rss для RSS-каналов в формате XML.Я хочу часть "Описание".Как я могу получить это

Ответы [ 4 ]

3 голосов
/ 20 мая 2012

Вы можете получить описание, но вы не можете использовать формат JSON и объект entry для этого.Если вы внимательно прочитаете параметры подачи в https://developers.google.com/feed/v1/devguide, вы увидите, что description - это не поле, которое возвращается на начальном уровне - просто на уровне подачи.

Чтобы сделать это,вам необходимо запросить канал в формате XML, а затем загрузить отдельные узлы, включая 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;
   }
2 голосов
/ 26 февраля 2012

Описание HTML можно получить с помощью переменной содержимого.Таким образом, вы должны иметь: div.appendChild (document.createTextNode (entry.content));

Имейте в виду, что при этом будет получен формат данных HTML.

1 голос
/ 01 октября 2014

После долгих поисков я обнаружил, что 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;
0 голосов
/ 26 февраля 2012

Изменить entry.title в:

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

к entry.description.

...