2011-09-19 49 views
0

任何人都可以建議是否可以從包含html的RSS提要節點爲每個圖像提取圖像src?從XML節點Jquery IMG src選擇

http://news.google.co.uk/news?ds=n&pq=news+pop&hl=en&sugexp=gsis,i18n%3Dtrue&cp=5&gs_id=34&xhr=t&q=music+pop&client=firefox-a&rls=org.mozilla:en-US:official&gs_upl=&bav=on.2,or.r_gc.r_pw.&biw=1440&bih=681&um=1&ie=UTF-8&output=rss

我們基本上要列出從谷歌RSS提要的故事,我可以訪問描述/鏈接等,因爲他們是自己的節點內 - 但無法訪問個別的圖像。

任何建議感激地接受

這是我的代碼 - $(函數(){$ 獲得( 'rss.php',{FEED_URL:「HTTP://news.google.co.uk /消息?DS = N & PQ =彈出+ musicnews & HL = EN & sugexp = GSIS,I18N%3Dtrue & CP = 9 & gs_id = 36 & XHR =噸& q =彈出+音樂& gs_upl = & BAV =上。 2,or.r_gc.r_pw。& biw = 1440 & bih = 681 & bs = 1 & um = 1 & ie = UTF-8 & output = rss'},function(xml){//獲取rss.php,在GET feed_url屬性中輸入並將其設置爲所需提要的URL。

$(xml).find("item").each(function() { 

     var i = $(xml).find("item").index(this); 

     var desc = $('item: description',xml).replace(/"/, '"'); 

     if(i < 2) { 
       var newsTitleOne = $('item:eq(0) title',xml).text(); 
       var newsTitleTwo = $('item:eq(1) title',xml).text(); 
       $(".newsIOne .newsText .t").append(newsTitleOne); 
       $(".newsITwo .newsText .t").append(newsTitleTwo); 
       alert(hello); 
     } else { 
      $("ul").append("<li style='color: blue'>" + $(this).text() + "</li>"); 
     } 
    }); 




}); 

});

乾杯 保羅

回答

0

在javascript中,你可以從任何類型的文本數據的讀取數據,你只需要正確的分析或pacience做到這一點。對於XML來說很簡單,因爲它適合於本地處理XML,XML是HTML的基礎。

使用jQuery會很容易,請參閱下面的示例。

var xml = "<rss version='2.0'><channel><title>RSS Title</title></channel></rss>", 
    xmlDoc = $.parseXML(xml), 
    $xml = $(xmlDoc), 
    $title = $xml.find("title"); 

更多信息可在jQuery.parseXML() - jQuery API找到。

對於發佈的飼料,它會更棘手,因爲圖像是在描述HTML編碼。

但是HTML可以通過這樣做解碼。

var decoded = description 
    .replace(/&amp;/g,'&') 
    .replace(/&lt;/g,'<') 
    .replace(/&gt;/g,'>') 
    .replace(/&quot;/, '"'); 

所以你解析飼料,獲得了描述,對其進行解碼並再次解析能解密,這樣你的img元素。 如果這對你來說太過分了,並且圖像源使用Regex來提取它。

/(?: src=&quot;)(.+)(?:&quot;)/ 

這樣的事情可以完成這項工作。

給你的例子它會是這樣的。

function (xml) { 

    var items = $(xml).find('item'); 
    for (var i = 0; i < items.length; i++) { 

     var description = items.eq(i).find('description'); 


     //Alternative 1 
     var descElem = $.parseXML(
      description 
      .replace(/&amp;/g, '&') 
      .replace(/&lt;/g, '<') 
      .replace(/&gt;/g, '>') 
      .replace(/&quot;/, '"') 
     ); 
     var imgSrc = $(descElem).find('img').attr('src'); 


     //Alternative 2 
     var imgSrc = /(?: src=&quot;)(.+)(?:&quot;)/.exec(descrition); 
     //null if don't exist 

     (...) 
    } 

} 
+0

歡呼聲爲您的幫助,有點失去應用實際.replace雖然!我已經包含了上面的代碼 - 如何將正則表達式/.replace應用於description變量?乾杯保羅 – Dancer

+0

剛剛添加了一個替代的代碼示例,沒有測試,但它會是這樣的。 – svrx

+0

順便說一句,感謝您的反饋......:/ – svrx