0

私のエラーを見つけることができる誰かがそこにいるに違いありません! 私はxmlフィードを解析し、ループを実行してページ上の特定のアイテムを取得しています:

www.highlandradio.com/feed/

変数 mp3Test を設定している行でエラーが発生しています。やりたいことは、エンクロージャータグの 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);



    }

バンプ2

4

1 に答える 1

0

問題は、同じ値を持つ 2 つのカウンターを使用していたことです。ばかげた間違いですが...解決策は次のとおりです。

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';
}
于 2013-07-27T07:28:38.310 に答える