-
-
Save fitomad/b8fbb3889f08682e7ae375000a3c3f97 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class BookParser: NSObject | |
{ | |
... | |
/// Parser de XML | |
private var parser: XMLParser | |
/// Tag en la que nos encontramos en un momento dado | |
private var actualElement: String | |
/// El parser que está *activo* en este momento | |
private var actualParser: XMLParserDelegate? | |
/** | |
Parseamos el XML que viene contenido en el `Data` | |
*/ | |
public init(data: Data) | |
{ | |
... | |
self.parser = XMLParser(data: data) | |
super.init() | |
// Delegado | |
self.parser.delegate = self | |
// Empezamos a parsear | |
parser.parse() | |
} | |
} | |
// MARK: - XMLParserDelegate protocol implementation - | |
extension BookParser: XMLParserDelegate | |
{ | |
/// Etiqueta de **apertura** de un elemento XML. | |
/// Aquí podremos recuperar los atributos de la etiqueta. | |
public func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:]) | |
{ | |
... | |
} | |
/// Etiqueta de **cierre** de un elemento XML | |
public func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) | |
{ | |
... | |
} | |
/// Contenido de una etiqueta | |
public func parser(_ parser: XMLParser, foundCharacters string: String) | |
{ | |
... | |
} | |
/// Etiquetas CDATA | |
public func parser(_ parser: XMLParser, foundCDATA CDATABlock: Data) | |
{ | |
... | |
} | |
/// Recibimos los errores durante el parseo | |
public func parser(_ parser: XMLParser, parseErrorOccurred parseError: Error) | |
{ | |
... | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment