【发布时间】:2015-02-24 16:55:27
【问题描述】:
我正在尝试创建一个 iOS 应用程序,它从网站(在我的情况下为 http://www.quest.nl/rss)读取 RSS 提要,将 RSS 解析为 UITableView,用户可以从中选择一篇文章。所选文章随后会显示在 UIWebView 中。我可以成功解析 XML,但是当我尝试解析文章链接时(文章链接是 html,但我想我也可以使用 NSXMLParser)我遇到了问题。 parser?.parse() 返回 false(表示出现问题),但 parser?.parserError 的内容仍然为零。
我的代码:
@objc protocol HTMLParserDelegate{
func parsingWasFinished()
}
import UIKit
class HTMLParser: NSObject, NSXMLParserDelegate {
func startParsingWithContentsOfURL(linkURL: NSURL) {
let parser = NSXMLParser(contentsOfURL: linkURL)
parser?.delegate = self
println(parser?.parse())
}
func parser(parser: NSXMLParser!, parseErrorOccured parseError: NSError!) {
println(parseError.description)
}
func parser(parser: NSXMLParser,
validationErrorOccured validationError: NSError!) {
println(validationError.description)
}
func parserDidEndDocument(parser: NSXMLParser!) {
//println("finished! :D")
delegate?.parsingWasFinished()
}
}
我已经尝试删除我为解析器实现的所有方法(见上文),但即使这样也没有解决解析问题。
使用 url 进行测试 (http://www.quest.nl/foto/de-5-gekste-dieren-van-2014),我注意到解析器到达第 80 行,但没有到达第 95 行,同时成功解析了所有先前的标签。
【问题讨论】:
-
一般不能使用
NSXMLParser解析HTML。您应该考虑使用 THPPL。见How to Parse HTML on iOS。 -
顺便说一下,如果您正在寻找关于某些内容不符合 XML 标准的详细信息的更具描述性的错误,通常命令行
xmllint程序很有启发性。我不确定在这种情况下是否需要它,但如果您在解析您认为是有效 XML 的内容时遇到问题,xmllint是一个很好的资源,可以放在您的口袋里。
标签: html ios parsing swift nsxmlparser