【问题标题】:Parsing XML in swift fails with nil error在 swift 中解析 XML 失败并出现 nil 错误
【发布时间】:2018-12-30 16:13:41
【问题描述】:

我正在尝试使用 Swift 解析 xml 文件。我创建了一个 XMLParserDelegate 类,OSM,它实现了以下功能:

func parserDidStartDocument(_ parser: XMLParser)
func parserDidEndDocument(_ parser: XMLParser)
func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:])
func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?)

我使用委托如下:

let url = URL(string: "file:///Users/<Username>/Documents/Maps/OSMFiles/simple.osm")!
print(url.absoluteString)
let parser = XMLParser(contentsOf: url)!
let osm = OSM()
parser.delegate = osm
print(parser.parse())
print(parser.parserError)

代码打印如下:

file:///Users/<Username>/Documents/Maps/OSMFiles/simple.osm
false
nil

【问题讨论】:

  • 但是nil表示没有错误?你是在调试器中运行的吗?
  • @JoakimDanielson 看起来是这样,但解析器返回 false,因此它以某种方式失败。我在调试器中运行,没有异常。
  • 您可以在委托协议中实现一些错误处理方法(我认为您需要),这样您就可以了解哪里出了问题。请注意,在“...操作异常终止...”之后 parseError 有一个值,这可能是一个较软的错误,例如某种验证错误。
  • @JoakimDanielson 谢谢你,我已经实现了parseErrorOccurredvalidationErrorOccurred 函数,但都没有被调用,还有其他函数可以提供更多信息吗?

标签: swift xml abort


【解决方案1】:

事实证明,应用沙盒是问题所在,可能是因为我试图访问沙盒外的文件。关闭沙盒可以解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    • 2022-12-14
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多