有一段时间我一直在使用SWXMLHash在我的项目中解析XML,但现在它不支持Swift 3.0,所以我决定开始自己的XML解析类来做如此。
我已经完成了基础知识,但是没有调用解析所需的XMLParse的委托方法,因此解析不会启动。我试图解析这个file,我真的不知道我错过了什么。为了测试它我正在游乐场工作,这是我到目前为止:
import Foundation
class MyXMLParser: NSObject, XMLParserDelegate {
//var myParser: XMLParser
var myParser: XMLParser!
var urlToParse: URL
init(urlToParse: String) {
self.urlToParse = URL(fileURLWithPath: urlToParse)
myParser = XMLParser(contentsOf: self.urlToParse)!
super.init()
}
func parseXMLFeed() {
print("STARTING XML FILE PARSING")
myParser.delegate = self
myParser.parse()
print("ENDED XML FILE PARSING")
}
func parserDidStartDocument(_ parser: XMLParser) {
print("DOCUMENT STARTED")
}
func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:]) {
print("DID START ELEMENT")
if (elementName == "NOMBRE") {
print(" didStartElement")
}
}
}
var myParser = MyXMLParser(urlToParse: "http://www.bilbao.net/WebServicesBilbao/WSBilbao?s=ODPRESBICI&u=OPENDATA&p0=A&p1=A")
myParser.parseXMLFeed()
控制台仅显示此
STARTING XML FILE PARSING
ENDED XML FILE PARSING
答案 0 :(得分:1)
"http://www.bilbao.net/...."
不是文件网址。使用您的代码
self.urlToParse = URL(fileURLWithPath: urlToParse)
解析器尝试在本地计算机上打开具有该名称的文件,
当然失败了。您还可以验证返回值
myParser.parse()
为false
,表示解析文档失败。
您可以使用URL(string: urlToParse)
来创建网址
指远程资源。