|
|
@@ -0,0 +1,83 @@ |
|
|
// |
|
|
// XMLParser.swift |
|
|
// SplitAndPopover |
|
|
// |
|
|
// Created by Gabriel Theodoropoulos on 17/9/14. |
|
|
// Copyright (c) 2014 Appcoda. All rights reserved. |
|
|
// |
|
|
|
|
|
import UIKit |
|
|
|
|
|
@objc protocol XMLParserDelegate{ |
|
|
func parsingWasFinished() |
|
|
} |
|
|
|
|
|
class XMLParser: NSObject, NSXMLParserDelegate { |
|
|
|
|
|
var arrParsedData = [Dictionary<String, String>]() |
|
|
|
|
|
var currentDataDictionary = Dictionary<String, String>() |
|
|
|
|
|
var currentElement = "" |
|
|
|
|
|
var foundCharacters = "" |
|
|
|
|
|
var delegate : XMLParserDelegate? |
|
|
|
|
|
|
|
|
func startParsingWithContentsOfURL(rssURL: NSURL) { |
|
|
let parser = NSXMLParser(contentsOfURL: rssURL) |
|
|
parser!.delegate = self |
|
|
parser!.parse() |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//MARK: NSXMLParserDelegate method implementation |
|
|
|
|
|
func parserDidEndDocument(parser: NSXMLParser) { |
|
|
delegate?.parsingWasFinished() |
|
|
} |
|
|
|
|
|
|
|
|
func parser(parser: NSXMLParser, didStartElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!, attributes attributeDict: [NSObject : AnyObject]) { |
|
|
|
|
|
currentElement = elementName |
|
|
} |
|
|
|
|
|
|
|
|
func parser(parser: NSXMLParser, didEndElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!) { |
|
|
if !foundCharacters.isEmpty { |
|
|
|
|
|
if elementName == "link"{ |
|
|
foundCharacters = (foundCharacters as NSString).substringFromIndex(3) |
|
|
} |
|
|
|
|
|
currentDataDictionary[currentElement] = foundCharacters |
|
|
|
|
|
foundCharacters = "" |
|
|
|
|
|
if currentElement == "pubDate" { |
|
|
arrParsedData.append(currentDataDictionary) |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
func parser(parser: NSXMLParser, foundCharacters string: String!) { |
|
|
if (currentElement == "title") || currentElement == "description" || currentElement == "link" || currentElement == "pubDate"{ |
|
|
foundCharacters += string |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
func parser(parser: NSXMLParser, parseErrorOccurred parseError: NSError!) { |
|
|
println(parseError.description) |
|
|
} |
|
|
|
|
|
|
|
|
func parser(parser: NSXMLParser, validationErrorOccurred validationError: NSError!) { |
|
|
println(validationError.description) |
|
|
} |
|
|
|
|
|
} |