class ViewController: UIViewController , XMLParserDelegate , URLSessionDelegate {
var parser:XMLParser?
var foundChars: String = ""
var personsStr: String = ""
var currentElementName: NSString = ""
var elementValue: String?
override func viewDidLoad() {
super.viewDidLoad()
getPaticularInviteDetails(inviteId:"781")
}
func getPaticularInviteDetails(inviteId:String) {
let soapMessage = "your_soap_request"
let urlString = "your_soap_url"
let url = NSURL(string: urlString)
let theRequest = NSMutableURLRequest(url: url! as URL)
let msgLength = soapMessage.characters.count
theRequest.addValue("text/xml; charset=utf-8", forHTTPHeaderField: "Content-Type")
theRequest.addValue(String(msgLength), forHTTPHeaderField: "Content-Length")
theRequest.httpMethod = "POST"
theRequest.httpBody = soapMessage.data(using: String.Encoding.utf8, allowLossyConversion: false)
let session = URLSession.shared
let task = session.dataTask(with: theRequest as URLRequest, completionHandler: { data, response, error -> Void in
if error != nil {
return
}
if let dat = data {
let response = NSString(data: dat, encoding: String.Encoding.utf8.rawValue)
print("XML Response ", response!)
let xmlParser = XMLParser(data: dat)
xmlParser.delegate = self
xmlParser.parse()
xmlParser.shouldResolveExternalEntities = true
}
else {
}
})
task.resume()
}
func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) {
currentElementName = elementName as NSString
if elementName == "userDetails"//(your value) {
print("It is coming")
elementValue = String()
}
}
func parser(_ parser: XMLParser, foundCharacters string: String) {
particularInviteDetails(string: string)
}
func particularInviteDetails(string: String) {
if elementValue != nil {
elementValue! += string
}
let data: Data? = elementValue?.data(using: String.Encoding.utf8)
do {
let json = try? JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [String:Any] ?? [:]
print("\n json in Found Chara:",json)
if json != nil {
let data = json?.object(forKey: "Data") as? String ?? ""
convertToDictionary(text: data)
}
else {
}
}
catch {
}
}
func convertToDictionary(text: String) {
if let data = text.data(using: .utf8) {
do {
let dict = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String:Any] ?? [:]
let getData = dict?.value(forKey: "name") as? String ?? ""
print("Result: ",getData)
}
catch {
print(error.localizedDescription)
}
}
}
}