斯威夫特 - RSS项目 - 不能得到CDATA块

问题描述:

我有一个非常恼人的问题,里面IMG SRC的链接。我正在开发Swift的RSS阅读器(使用Xcode 7.1)。我希望我的tableview的每个单元格显示每个新闻的图像。这里是我的代码:斯威夫特 - RSS项目 - 不能得到CDATA块

 cell.itemImageView.image = UIImage(named: "placeholder") 
    let news = items[indexPath.row] as MWFeedItem? 
     if news?.content != nil { 

     let htmlContent = news!.content as NSString 
     var imageSource = "" 

     let rangeOfString = NSMakeRange(0, htmlContent.length) 
     let regex = try? NSRegularExpression(pattern: "(<img.*?src=\")(.*?)(\".*?>)", options: []) 

     if htmlContent.length > 0 { 
      let match = regex?.firstMatchInString(htmlContent as String, options: [], range: rangeOfString) 

      if match != nil { 
       let imageURL = htmlContent.substringWithRange(match!.rangeAtIndex(2)) as NSString 
       print(imageURL) 

       if NSString(string: imageURL.lowercaseString).rangeOfString("feedburner").location == NSNotFound { 
        imageSource = imageURL as String 

           } 

           } 
     } 

     if imageSource != "" { 
      cell.itemImageView.setImageWithURL(NSURL(string: imageSource)!, placeholderImage: UIImage(named: "placeholder")) 
     } 
    else{ 
      cell.itemImageView.image = UIImage(named: "placeholder") 
     } 

    } 

所以,问题是:当RSS提要XML文件没有CDATA块,我的代码完美地工作;在其他大多数情况下,这是行不通的,因为里面的xml文件有这样的结构:

<![CDATA[<p><a href="http://firenze.repubblica.it/cronaca/2015/11/12/news/la_denuncia_dei_genitori_di_una_scuola_di_firenze_la_mostra_divina_bellezza_vietata_ai_bambini_-127167480/?rssimage"> <img src="http://www.repstatic.it/content/nazionale/img/2015/11/12/115530091-51ce67c2-7b38-41c1-8aa5-21d51b157335.jpg" width="140" align="left" hspace="10"></a>I genitori contro la scelta del consiglio interclasse delle terze elementari dell'istituto Matteotti di fermare la gita all'esposizione "Divina Bellezza" sul...</p>]]></description><guid isPermaLink="true"><! 

很显然,CDATA块不会让我读IMG SRC的链接。我能做什么? 提前感谢您的帮助!

+0

更好地粘贴XML内容作为一个整体,使我们知道的,你想抓住 – cezheng

+0

这里的部分内容是完整的XML代码:HTTP://www.repubblica.it/rss/homepage/ rss2.0.xml我需要字符串在 Swift1

+0

是,如果 cezheng

我用在操场下面的代码你的正则表达式,并顺利拿到了从XML所有的IMG SRC网址执行。

import Foundation 

let url = NSURL(string: "http://www.repubblica.it/rss/homepage/rss2.0.xml")! 
let xml = try String(contentsOfURL: url) 
let regex = try NSRegularExpression(pattern: "(<img.*?src=\")(.*?)(\".*?>)", options: []) 
let range = NSMakeRange(0, xml.characters.count) 
regex.enumerateMatchesInString(xml, options: [], range: range) { (result, _, _) -> Void in 
    let nsrange = result!.rangeAtIndex(2) 
    let start = xml.startIndex.advancedBy(nsrange.location) 
    let end = start.advancedBy(nsrange.length) 
    print(xml[start..<end]) 
} 
+0

非常感谢您的咨询!现在我有另一个问题:如果我使用我的第一篇文章后正则表达式,作为输入XML值,它返回给我所有的单元格相同的图像!我怎样才能为每个新闻展示正确的形象?感谢您的建议! – Swift1

+0

你应该使用我用你的tableview打印的东西。把它们保存到一个数组,并实现 – cezheng

+0

你能联系我有着相似的应用项目中的数据源委托方法?我是Swift新手。 – Swift1