How to convert XML to objects in Swift?

How can I convert request responses in XML format to objects in Swift, just like ObjectMapper does with JSON to objects?

Author: Tiago Amaral, 2016-07-08

1 answers

You need to implement NSXMLParserDelegate:

Declare two global variables

var xmlParser: NSXMLParser!
var currentContentElement: NSMutableString!

Then in the method that receives the SOAP request response you call xmlParser

xmlParser = NSXMLParser(data: responseData)
xmlParser.delegate = self
xmlParser.parse()

Implementation of NSXMLParserDelegate:

func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) {
    self.currentContentElement = NSMutableString()
}

func parser(parser: NSXMLParser, foundCharacters string: String) {
    self.currentContentElement.appendString(string)
}

func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
    switch elementName {
    case "CAMPOXXXX":
        let variavelxxx = currentContentElement.integerValue
        break
    default:
        break
    }
    self.currentContentElement = nil
}

func parserDidEndDocument(parser: NSXMLParser) {

}

Is very simple in the didEndElement method you take the values you need and throw it into your object.

Hope I helped you =D

 0
Author: Victor Cechinel, 2017-05-24 18:20:05