2011-09-19 50 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