【问题标题】:NSXML Parser and exception/error handling Swift 2.0NSXML 解析器和异常/错误处理 Swift 2.0
【发布时间】:2015-08-21 10:52:12
【问题描述】:

所以,让我尽可能简单和简短地解释一下......
我正在尝试使用 swift 使用常规方法从 url 解析 xml 文件:

if let parser = NSXMLParser(contentsOfURL: xml) {
        parser.delegate = self

        let success:Bool = parser.parse()

        if success {
            print("parse success")

        } else {
            print("parse failure!")
        }
    }   

它可以工作,但是当遇到重音等特殊字符时,一切都变得一团糟,所以我在这里发现,如果不是直接解析 url,我使用 NSData 的编码就不会发生。
当我第一次尝试 swift 2.0 和使用 catch 和 try 进行错误处理时,对此知之甚少。这是我的代码:

do{
        let dataString = try String(contentsOfURL: XML, encoding: NSUTF8StringEncoding)
        let data:NSData = dataString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!

        if let parser = NSXMLParser(data: data) as NSXMLParser! {
            parser.delegate = self

            let success:Bool = parser.parse()

            if success {
                print("parse success")

            } else {
                print("parse failure!")
            }
        }

    }catch {
        print("catch failure!")
    }

但这总是返回“捕获失败!”,网址没问题并且可以正常工作,其他方法可以正常工作(特殊字符除外)我真的很茫然。

非常感谢您!

【问题讨论】:

    标签: ios xcode swift


    【解决方案1】:

    在另一个答案 Here 之后,我能够解决这个问题。

    而不是使用:

    func parser(parser: NSXMLParser, foundCharacters string: String) {
        if (currentElement != ""){
                currentString = string
    
        }
    
    }
    

    我用过:

    func parser(parser: NSXMLParser, foundCharacters string: String) {
        if (currentElement != ""){
                currentString += string
    
        }
    
    }
    

    一切正常!

    【讨论】:

      猜你喜欢
      • 2016-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-21
      • 1970-01-01
      • 1970-01-01
      • 2014-04-06
      • 2011-08-15
      相关资源
      最近更新 更多