XMLParser没有调用委托方法

时间:2016-07-17 08:16:38

标签: xml swift swift3

有一段时间我一直在使用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

1 个答案:

答案 0 :(得分:1)

"http://www.bilbao.net/...."不是文件网址。使用您的代码

self.urlToParse = URL(fileURLWithPath: urlToParse)

解析器尝试在本地计算机上打开具有该名称的文件, 当然失败了。您还可以验证返回值 myParser.parse()false,表示解析文档失败。

您可以使用URL(string: urlToParse)来创建网址 指远程资源。