必须有人可以发现我的错误!我正在解析xml提要并运行循环以获取页面上的某些项目:
www.highlandradio.com/feed/
我在设置变量mp3Test的行上遇到错误。我想要做的就是将它设置为等于enclosure标记的url属性(如果存在)。这就是为什么我要包括测试来检查每个项目是否有一个外壳标签,如果是的话我将它设置为等于url标签,但如果不是,我将它设置为等于'null.mp3 ' 目前。当我在循环中运行时,我得到了一定量的正确数字,然后在循环的一些迭代中,我崩溃了。我正在使用钛,因此没有得到任何正确的错误消息。它只是突出显示我设置mp3Test的行,并说调试当前指令指针。我为此疯狂。请帮忙。
var url="http://www.highlandradio.com/feed/";
var xhr = Titanium.Network.createHTTPClient();
xhr.onload = function() {
// Data is returned from the blog, start parsing
var doc = this.responseXML.documentElement;
// begin looping through blog posts
var items = doc.getElementsByTagName("item");
var enclosure = doc.getElementsByTagName("enclosure");
console.log("NEWEST Enclosure Length -----------"+enclosure.length);
for (var i = 0; i < items.length; i++) {
var itemsEnclosureLength=items.item(i).getElementsByTagName("enclosure").length;
var itemsEnclosureExists=items.item(i).getElementsByTagName("enclosure");
console.log("EXISTs ----------------------------------"+ itemsEnclosureExists);
console.log("Newest ENCLOSURE LENGTH ---------------------- [ "+i+ " ]" + itemsEnclosureLength);
var str=items.item(i).getElementsByTagName("content:encoded").item(0).text;
console.log("STRING TEST "+ str);
var patt1=/([a-z\-_0-9\/\:\.]*\.(jpg|jpeg|png|gif))/i;
var urlMatch = str.match(patt1);
console.log("MATCHES TESTER -----------------------------------" + typeof urlMatch);
data.push({
title: items.item(i).getElementsByTagName("title").item(0).text,
leftImage: str.match(patt1) !== null ? str.match(patt1)[0] : 'image_news.png',
dataToPass: items.item(i).getElementsByTagName("description").item(0).text,
mp3Test: itemsEnclosureLength > 0 ? items.item(i).getElementsByTagName("enclosure").item(i).getAttribute("url"):'NULL.MP3'
});
console.log("Check this --------------------------"+ mp3Test);
}
BUMP2
答案 0 :(得分:0)
问题是我使用了两个具有相同值的计数器!愚蠢的错误,但......这是解决方案:
var itemsEnclosureLength=items.item(i).getElementsByTagName("enclosure").length;
var itemsEnclosureExists=items.item(i).getElementsByTagName("enclosure");
if (itemsEnclosureExists){
for (n=0; n<itemsEnclosureLength; n++){
mp3=items.item(i).getElementsByTagName("enclosure").item(n).getAttribute("url");
}
}
else{
mp3= 'NULL.mp3';
}