【发布时间】:2015-11-13 09:49:46
【问题描述】:
我有一个非常烦人的问题。我正在为 Swift 开发一个 RSS 阅读器(使用 Xcode 7.1)。我希望我的表格视图的每个单元格都显示每个新闻的图像。这是我的代码:
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 链接。我能做些什么? 提前感谢您的帮助!
【问题讨论】:
-
最好将xml内容粘贴为一个整体,以便我们知道您要抓取的内容的哪一部分
-
这是完整的 xml 代码:repubblica.it/rss/homepage/rss2.0.xml 我需要
-
是不是如果
-
是的,没错。我该怎么办?
-
你可以参考我下面的回答,你的正则表达式完全没问题,你只需要从中取出所有的匹配项