我正在使用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]并且没有得到任何结果。
答案 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);
}
有了这个你可以创建一个元素(也许是一个字典?)然后将它推入你的数组。 我希望这能以某种方式帮助你。