let xml = XML(string: xmlContent)
let color0 = xml.product.catalog_item.size.color_swatch.1.string //"Burgundy"
// notice that, we use "quot; prefix for subscript attribute
let description0 = xml.product.catalog_item.size.1.$description.string //"Large"
This is same as below, SwiftyXML will auto pick the first element as default:
let xml = XML(data: xmlFileData)
let color = xml.product.0.catalog_item.0.size.0.color_swatch.1.string //return "Burgundy"
What about if you input some wrong keys:
let xml = XML(data: xmlFileData)
// print the error
if let color1 = xml.product.catalog_item.wrong_size.wrong_color.1.xml {
// do stuff ~
print(color1)
} else {
print(xml.product.catalog_item.wrong_size.wrong_color.1.error) //.product.0.catalog_item.0: no such children named: "wrong_size"
}
You can use CocoaPods to install SwiftyXML by adding it to your Podfile:
platform :ios, '8.0'
use_frameworks!
target 'MyApp' do
pod 'SwiftyXML', '~> 3.0.0'
end
Carthage
Create a Cartfile that lists the framework and run carthage update. Follow the instructions to add $(SRCROOT)/Carthage/Build/iOS/SwiftyXML.framework to an iOS project.
github "chenyunguiMilook/SwiftyXML" ~> 3.0.0
Manually
Download and drop XML.swift into your project.
Congratulations!
Swift Package Manager
You can use The Swift Package Manager to install SwiftyXML by adding the proper description to your Package.swift file:
if let color1 = xml.product.catalog_item.wrong_size.wrong_color.1.xml {
// do stuff ~
print(color1)
} else {
print(xml.product.catalog_item.wrong_size.wrong_color.1.error)
}
Catch the error
// catch the error
do {
let color = try xml.product.catalog_item.wrong_size.wrong_color.1.getXML()
print(color)
} catch {
print(error)
}
Access XML List
// handle xml list
for catalog in xml.product.catalog_item {
for size in catalog.size {
print(size.$description.stringValue)
}
}
Read Enums
// read enum value, Notice: enum need implements RawRepresentable
public enum Color : String {
case Red, Navy, Burgundy
}
if let c: Color = xml.product.catalog_item.size.color_swatch.enum() {
print(c)
}
Construct XML
let store = XML(name: "store")
.addAttribute(name: "description", value: "Ball Store")
.addChildren([
// attributes can be added in the initializer
XML(name: "product", attributes: [
"name": "football",
"weight": 0.453
])
])
// attributes can be added to an existing object
let product2 = XML(name: "product")
product2.addAttribute(name: "name", value: "basketball")
product2.addAttribute(name: "weight", value: 0.654)
// children can be added to an existing object
store.addChild(product2)
print(store.toXMLString())
// store xml output
<store description="Ball Store" >
<product name="football" weight="0.453" />
<product name="basketball" weight="0.654" />
</store>
SwiftyXML
SwiftyXML use most swifty way to deal with XML data.
Features
Sample XML:
With SwiftyXML all you have to do is:
This is same as below, SwiftyXML will auto pick the first element as default:
What about if you input some wrong keys:
Requirements
Installation
CocoaPods
You can use CocoaPods to install
SwiftyXML
by adding it to yourPodfile
:Carthage
Create a
Cartfile
that lists the framework and runcarthage update
. Follow the instructions to add$(SRCROOT)/Carthage/Build/iOS/SwiftyXML.framework
to an iOS project.Manually
XML.swift
into your project.Swift Package Manager
You can use The Swift Package Manager to install
SwiftyXML
by adding the proper description to yourPackage.swift
file:Usage
Initialization
Access XML and print out the error
Catch the error
Access XML List
Read Enums
Construct XML