gpt4 book ai didi

XMLParser 不调用委托(delegate)方法

转载 作者:行者123 更新时间:2023-11-28 06:39:06 26 4
gpt4 key购买 nike

有一段时间我一直在使用 SWXMLHash用于在我的项目中解析 XML,但现在它目前不支持 Swift 3.0,所以我决定开始使用我自己的 XML 解析类来实现这一点。

我已经完成了基础工作,但是没有调用解析所需的 XMLParse 委托(delegate)方法,因此解析没有开始。我正在尝试解析此 file我真的不知道我错过了什么。为了测试它,我正在 Playground 上工作,这是我目前所拥有的:

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

最佳答案

“http://www.bilbao.net/....” 不是文件 URL。用你的代码

self.urlToParse = URL(fileURLWithPath: urlToParse)

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

您可以使用 URL(string: urlToParse) 来创建一个 URL引用远程资源。

关于XMLParser 不调用委托(delegate)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38419216/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com