Skip to content

Instantly share code, notes, and snippets.

@fitomad
Created March 26, 2020 15:42
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 fitomad/b8fbb3889f08682e7ae375000a3c3f97 to your computer and use it in GitHub Desktop.
Save fitomad/b8fbb3889f08682e7ae375000a3c3f97 to your computer and use it in GitHub Desktop.
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