Javascript, сворачивающий узлы ATOM при разборе - PullRequest
0 голосов
/ 10 февраля 2011

Я читаю фид ATOM с помощью jQuery и зацикливаюсь на результатах. При этом jQuery, похоже, объединяет два узла в один.

ATOM:

   <link rel="alternate" type="text/html" href="http://twitter.com/leesalove/statuses/34751066604044288" />
   <link rel="image" type="image/png" href="http://a1.twimg.com/profile_images/1236597389    ge_normal.jpg" />

СТАНОВИТСЯ

, link : 'http://twitter.com/leesalove/statuses/34751066604044288'

Итак, второе значение потеряно. Проблема, которая мне нужна.

Вот как я загружаю данные. Необходимость использования прокси-сервера Google Feed, потому что он принадлежит другому домену, чем хост.

    var url = 'http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&callback=?&q=' + escape('http://vivaglam.tidytweet.com/VivaGlam.atom');

    jQuery.getJSON(url, function(data){
        if (data.responseStatus == 200) {
            jQuery(data.responseData.feed.entries).each(function(i,p) {
                console.log(p);
            });
        }
    });

1 Ответ

0 голосов
/ 10 февраля 2011

Не знаю, как вы читаете содержимое (, в котором может быть проблема, но без примера вашего кода мы не можем сказать ), но вы можете использовать JSONP вместо atom, который удобен для JavaScript:)

var url = 'http://search.twitter.com/search.json?q=from%3Aleesalove&rpp=100&callback=?';

$.getJSON(url, function(data){
    // do what you want with results here..
    // data.total is the count
    // data.results is a list of the results
});

документация для API находится на http://search.twitter.com/api/


Обновление

Я вижу, вы используете Googlefeed api.
Если вы смотрите на спецификацию , они показывают ( при отсутствии [] ), что он возвращает единственное значение.

И я считаю, что тот, который они выбирают, основан не на индексе ( первый ), а на том, который имеет rel="alternate", поскольку он должен дать вам ссылку на статью.

Вы можете использовать версию XML ( также возвращается через json ), которая возвращает все элементы.
Для этого вам нужно добавить в свой URL другой параметр &output=xml doc.

Вы можете использовать jQuery, чтобы прочитать XML и просмотреть его.

   var url = 'http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&callback=?&output=xml&q=' + escape('http://vivaglam.tidytweet.com/VivaGlam.atom');

    jQuery.getJSON(url, function(data){
        if (data.responseStatus == 200) {
            var xmlDoc = $.parseXML(data.responseData.xmlString);
            var $xml = $(xmlDoc);

            $xml.find('entry').each(function(i,p) {
                console.log( $(p).find('link[rel="image"]').attr('href') );
            });
        }
    });

Демонстрация по адресу: http://www.jsfiddle.net/gaby/vANcv/
( использует jquery 1.5 для $.parseXML doc , но было бы то же самое, если вы просто $(xmlstring))

...