XMLParser

A lightweight XMLParser for assembling and parsing XML values written for iOS 8+ in Swift 2.

74
8
Swift

Overview

Description

XMLParser lets you convert a pure Swift dictionary into XML string and vice versa.

Requirements

  • Swift 2 (Xcode 7+)
  • iOS 8+
  • ARC

Installation

###Cocoa Pods

pod 'XMLParser', '~> 1.0'

Usage

####Parsing an XML string from a Dictionary

let body = [
    "request" : [
        "meta" : [
            "type" : "getOrder",
            "date" : "2015-08-29 12:00:00",
            "device_name" : "iPhone 6 Plus",
            "device_os_version" : "iOS 9"
        ]
    ],
    
    "encryption" : [
        "type" : "RSA"
    ]
]

let header = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
let result = XMLParser.sharedParser.encode(body, header: header)
print(result)

####Result

<?xml version="1.0" encoding="UTF-8"?>
<encryption>
   <type>RSA</type>
</encryption>
<request>
   <meta>
      <type>getOrder</type>
      <device_os_version>iOS 9</device_os_version>
      <date>2015-08-29 12:00:00</date>
      <device_name>iPhone 6 Plus</device_name>
   </meta>
</request>

####Associated tags
E.g. <td class='achievements'>0</td>

let data = [
    "tr" : [
        XMLTag(header: "td", name: "class", value: "num") : 1,
        XMLTag(header: "td", name: "class", value: "achievments") : 0,
        XMLTag(header: "td", name: "class", value: "sum") : 205
    ]
]

let result = XMLParser.sharedParser.encode(data)
print(result)

####Result

<tr>
   <td class='achievments'>0</td>
   <td class='num'>1</td>
   <td class='sum'>205</td>
</tr>

==========

####Extracting data from an XML converted string

let convertedString = "<request><meta><type>getOrder</type><date>2015-08-29 12:00:00</date><device_name>iPhone 6 Plus</device_name><device_os_version>iOS 9</device_os_version></meta></request><encryption><type>RSA</type></encryption>"
let result = XMLParser.sharedParser.decode(convertedString)
print(result)

####Result

[
  type: [getOrder, RSA], 
  device_os_version: [iOS 9], 
  date: [2015-08-29 12:00:00], 
  device_name: [iPhone 6 Plus]
]

Author

Eugene Mozharovsky (@DottieYottie)

License