Вот возможное решение для вас.
a) Вам нужен какой-то прокси, чтобы разрешить загрузку контента с помощью ajax из разных источников. Рекомендуется внести белый список и добавить заголовки CORS и т. Д., Чтобы предотвратить использование прокси-сервера. Например, создайте php-файл на одном из ваших серверов с этой функциональностью:
$valid_url_regex = '/.*(rss|feed|atom).*/';
$url = $_GET['url'];
if ( !preg_match( $valid_url_regex, $url ) ) exit;
$feeds = file_get_contents($url);
//this is some workaround to get special namespaces into the json
$feeds = str_replace("<content:encoded>","<contentEncoded>",$feeds);
$feeds = str_replace("</content:encoded>","</contentEncoded>",$feeds);
$feeds = str_replace("<media:content ","<mediaContent ",$feeds);
$feeds = str_replace("</media:content>","</mediaContent>",$feeds);
$simpleXml = simplexml_load_string($feeds, "SimpleXMLElement", LIBXML_NOCDATA);//this is for CDATA
$json = json_encode($simpleXml);
header("Access-Control-Allow-Origin: http://yourdomainnamehere");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400');
print $json;
b) Выполнить асинхронный ajax-вызов прокси-скрипта и обработать данные:
function loadRss(url)
{
$.ajax({
url: 'yourserverurl/rssproxy.php?url='+url,
type: 'GET',
success: function(response) {
handleResponse(JSON.parse(response));
}
});
}
function handleResponse(response) {
var entries;
if(response.entry) //ATOM
entries = response.entry;
else if(response.channel.item) //RSS 1/2
entries = response.channel.item;
var feedTitle="";
if(response.title)
feedTitle = response.title;
else if(response.channel.title)
feedTitle = response.channel.title;
//iterate all news entries
$.each(entries, function (i, e) {
console.log("Entry #"+i);
console.log(e);
//access the data as necessary like e.content, e.summary, e.contentEncoded etc....
}
);
}
Я изменил свой google rss api несколько лет назад на YQL, теперь мне пришлось сделать это снова сегодня, это заняло несколько часов, но на этот раз вы не будете зависеть от какого-либо стороннего поставщика и, надеюсь, вы сможете использовать свой новый читательский код до тех пор, пока rss не исчезнет в пользу человечества для знаменитого пузыря фильтров;)
Вышеприведенный код является лишь подсказкой, и, конечно, вам придется потратить некоторое время, если вы хотите отобразить ответ на обобщенную структуру YQL. Я не пошел по этому пути и обращался к свойствам ответа по мере необходимости.