因此,让我
尽我所能地简单和简短地进行说明...我正尝试通过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进行编码。
当我第一次尝试使用catch and try进行swift 2.0和错误处理时,对此并不太了解。这是我的代码:
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!")
}
但这总是返回“捕获失败!”,URL正常并且可以正常工作,而其他方法可以正常工作(特殊字符除外),我真的很茫然。
提前非常感谢您!
遵循另一个答案在这里,我能够解决此问题。
而不是使用:
func parser(parser: NSXMLParser, foundCharacters string: String) {
if (currentElement != ""){
currentString = string
}
}
我用了:
func parser(parser: NSXMLParser, foundCharacters string: String) {
if (currentElement != ""){
currentString += string
}
}
一切都按预期进行!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句