React Native RSS Feed阅读器问题

时间:2016-08-11 03:33:10

标签: rss react-native

我正在使用React Native并尝试读取然后解析RSS Feed。我正在学习本教程:

https://getsiphon.com/docs/build-a-youtube-browser/

我正在使用一些代码,但尝试使用不同的RSS Feed。例如:

https://fivejs.codeschool.com/feed.rss

以下是我遇到问题的具体代码:

getNews() {
  var url = "https://fivejs.codeschool.com/feed.rss"
  fetch(url)
  .then((response) => response.text())
  .then((responseText) => {
    const doc = new DOMParser().parseFromString(responseText, "text/xml");
    var items = doc.getElementsByTagName('item');
    var objs = []
    for (var i = 0; i < items.length; i++) {
      objs.push({
        title: items[i].childNodes[0]
      })
    }
    console.log("yay! made it here")
    console.log("objs length: ", objs.length)
    console.log("objs: ", objs[0])
  })
  .catch((error) => {
    console.log('Error fetching the feed: ', error);
  });
}

一切都很好,直到我在控制台注销objs数组。换句话说,我看到了耶!在这里发了消息,我也看到了objs.length消息(25)。一旦到达下一部分,我就看不到数组中的第一项。

作为一个注释,我正在构建我的代码并使用Xcode在iOS模拟器中运行它。我不确定调试输出控制台是否与它有任何关系,但我无法想象它会输出其他消息。我甚至尝试在for循环中调试项目[i] .childNodes [0]并且没有得到任何结果。

1 个答案:

答案 0 :(得分:0)

不确定这会对你有所帮助,但是按照我自己项目的相同教程,我必须检查两个要点,以使一切正常:

  • 检查XML上的标签,有时这会弄乱你的解析。

  • 在循环中,您可以选择其他属性。例如,在我尝试解析博客rss的情况下,我得到了&#34; Item&#34; (如12项)和里面我得到&#34;标题&#34;所以我这样做了:

    var item = doc.getElementsByTagName('item');
    
    for(i=0; i < item.length; i++){
    
    var title = item[i].getElementsByTagName('title');
    console.log(title[0].textContent);
    
    }
    

有了这个你可以创建一个元素(也许是一个字典?)然后将它推入你的数组。 我希望这能以某种方式帮助你。