Skip to content

Instantly share code, notes, and snippets.

@leaves3113
Last active August 29, 2015 14:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save leaves3113/cc836c2a1379a26da9c5 to your computer and use it in GitHub Desktop.
Save leaves3113/cc836c2a1379a26da9c5 to your computer and use it in GitHub Desktop.
IOS Swift NSXMLParser example
private class ParserDelegate:NSObject, NSXMLParserDelegate{
init(element:String){
self.element=element
super.init()
}
var text=""
var element:String
var recordingElementValue:Bool=false
func parser(parser: NSXMLParser!, didStartElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!, attributes attributeDict: [NSObject : AnyObject]!) {
println("element start: \(elementName)")
if elementName==element{
recordingElementValue=true
}
}
func parser(parser: NSXMLParser!, didEndElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!) {
println("element finish: \(elementName)")
if elementName==element{
recordingElementValue=false
}
}
func parser(parser: NSXMLParser!, foundCharacters string: String!) {
if recordingElementValue{
text+=string
}
}
}
class XMLParser{
init(xml:String, element:String){
self.xmlString=xml
self.parserDelegate=ParserDelegate(element:element)
}
private var xmlString:String
var returnValue:String?
private var parserDelegate:ParserDelegate
func parse()->Bool{
let p=NSXMLParser(data: xmlString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false))
p.delegate=parserDelegate
if p.parse(){
returnValue=parserDelegate.text
return true
}
return false
}
}
let xmlString="<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\">" +
"<soap:Header/>" +
"<soap:Body>" +
"<m:GetUsersListResponse xmlns:m=\"http://google.com\">" +
"<m:return xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"asdasdas" +
"</m:return>" +
"</m:GetUsersListResponse>" +
"</soap:Body>" +
"</soap:Envelope>"
let parser=XMLParser(xml: xmlString, element:"m:return")
parser.parse()
println(parser.returnValue!)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment