本文介绍了如何在 Swift 中解析 XML Web 服务?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我不知道如何解析我下面的代码..有人可以吗
I don't know how to parse in my below code..Can someone
func callService(usr: String, pwdCode: String) {
let url = NSURL(string: "http://inspect.dev.cbre.eu/SyncServices/api/jobmanagement/PlusContactAuthenticationPost")
var xmlParse:NSString = ""
var data : NSData!
let request = NSMutableURLRequest(URL: url!)
request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
request.HTTPMethod = "POST"
let dictionary = ["email": usr, "userPwd": pwdCode]
var error: NSError?
if let body = NSJSONSerialization.dataWithJSONObject(dictionary, options: nil, error: &error) {
request.HTTPBody = body
} else {
println("JSON error: \(error)")
}
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
(data, response, error) in
println(NSString(data: data, encoding: NSUTF8StringEncoding))
// xmlParse=NSString(data: data, encoding: NSUTF8StringEncoding)!
// let data = (xmlParse as NSString).dataUsingEncoding(NSUTF8StringEncoding)
// NSXMLParser(data : NSData)
// xmlParse=NSString(data: data, encoding: NSUTF8StringEncoding)!
// xmlParse=response
// println(xmlParse)
}
task.resume()
}
推荐答案
您应该在请求的完成处理程序中使用 NSXMLParser
:
You should use the NSXMLParser
in your completion handler for the request:
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
(data, response, error) in
if data == nil {
println("dataTaskWithRequest error: \(error)")
return
}
let parser = NSXMLParser(data: data)
parser.delegate = self
parser.parse()
// you can now check the value of the `success` variable here
}
task.resume()
// but obviously don't try to use it here here
显然,上面假设您已经 (a) 定义了您的视图控制器以符合 NSXMLParserDelegate
并且 (b) 已经实现了 NSXMLParserDelegate
方法,例如类似:
Clearly, the above assumes that you have (a) defined your view controller to conform to NSXMLParserDelegate
and (b) have implemented the NSXMLParserDelegate
methods, e.g. something like:
var elementValue: String?
var success = false
func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [NSObject : AnyObject]) {
if elementName == "success" {
elementValue = String()
}
}
func parser(parser: NSXMLParser, foundCharacters string: String?) {
if elementValue != nil {
elementValue! += string
}
}
func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
if elementName == "success" {
if elementValue == "true" {
success = true
}
elementValue = nil
}
}
func parser(parser: NSXMLParser, parseErrorOccurred parseError: NSError) {
println("parseErrorOccurred: \(parseError)")
}
这篇关于如何在 Swift 中解析 XML Web 服务?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!