在JS中解析RSS而不使用tierce服务(vanilla JS或Angular)

时间:2014-10-05 09:27:48

标签: javascript angularjs rss firefox-os

我想在JS中恢复RSS提要。

我在网上查了一整天,发现几乎所有人都使用google feed API,Yahoo API或nodejs / php页面进行计算和Jsonification。我不想依赖Google Feed API之类的服务。

我的目标是获取RSS Feed,然后创建一个数组,其中Feed上的每篇文章都是一个对象,完整的javascript。

我正在使用Angular JS,所以如果帮助可以使用这个lib的好处,那就太棒了,但如果需要,我不会接受任何vanilla-JS代码。

对于那些可能想问为什么的人:这是针对Firefox操作系统的应用程序,这就是为什么我不能拥有任何php / nodejs。所有这些都必须用JS制作。

谢谢, 汤姆

4 个答案:

答案 0 :(得分:0)

直接获取xml结构有什么问题?

我认为使用systemXHR权限定期的AJAX请求应该可以正常使用。

然后,您将能够以可能的方式从xml获得所需内容。

答案 1 :(得分:0)

所以我最好的猜测就是使用普通DOM parser,然后查询文档:

var parser = new DOMParser();
var xmlDoc = parser.parseFromString(txt, "text/xml");

我认为现在你也可以使用像querySelectorAll这样的东西来快速迭代文档,类似于普通的DOM。例如。这样的事情会起作用:

[].forEach.call(xmlDoc.querySelectorAll('item'), function(item) {
    console.log(item.querySelector('title').textContent);
});

答案 2 :(得分:0)

简短的回答是,由于浏览器的同源策略,您无法在不使用第三方服务的情况下在客户端上获取和解析XML Feed。

从那里,有两个选项:

  • 服务器端的提取和解析器。您必须自己完成所有繁重的工作,但随后您可以轻松地从浏览器加载数据,因为它将位于同一域下,因此同源策略将不适用
  • 对您不使用第三方的要求进行妥协,并使用将第三方转换为JSON以绕过SOP的方式。

在这两种情况下,我建议你检查Superfeedr(我创建的!),我认为这可以帮助很多......我们也有Angular module for feeds

答案 3 :(得分:0)

感谢那些花时间回答我的人们:) 如果没有任何服务器计算,它似乎是不可能的。

我必须承认我很幸运,因为我想打电话的服务刚刚推出了一个新的API,所以我很高兴结束:)

感谢每一个人!