Así es como funciona:
Hay una clase llamada NSXMLParser. Se usa para analizar archivos XML. Sin embargo, NSXMLParser es estúpido. Todo lo que sabe hacer es analizar XML, pero no sabe lo que se supone que debe hacer con la información que encuentra.
Ingrese un delegado. Un delegado es como una niñera. Dado que XMLParser no tiene ni idea de qué hacer con la información que encuentra, va y le pregunta a su delegado sobre todas y cada una de las cosas: "¡Oye! ¡Empecé a analizar un documento! ¿Se supone que debo hacer algo?" "¡Oye! ¡Encontré algunos CDATA! ¡Qué se supone que debo hacer con eso!" "¡Oye, encontré otra etiqueta!" "¡Oye! ¡Encontré una etiqueta de cierre!", Y así sucesivamente. Todos estos "¡Oye!" las declaraciones son métodos delegados, o en otras palabras, son métodos opcionales que un objeto delegado puede elegir implementar. Por lo general (pero no siempre), el objeto que crea NSXMLParser también es el delegado, pero ese no tiene que ser el caso.
lo que podría tener algo como esto:
NSXMLParser * parser = [[NSXMLParser alloc] initWithContentsOfURL:someURLToAnXMLFile];
[parser setDelegate:self];
[parser parse];
[parser release];
Luego, en ese mismo objeto (auto), puede que tenga algunos de estos métodos:
- (void)parserDidStartDocument:(NSXMLParser *)parser {
//the parser started this document. what are you going to do?
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict {
//the parser found an XML tag and is giving you some information about it
//what are you going to do?
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
//the parser found some characters inbetween an opening and closing tag
//what are you going to do?
}
- (void)parserDidEndDocument:(NSXMLParser *)parser {
//the parser finished. what are you going to do?
}
Hay un montón de éstos métodos enumerados en la documentación. Simplemente diríjase a la referencia de la clase NSXMLParser, y todos figuran en la sección "Métodos delegados". Una vez que te acostumbras, NSXMLParser es bastante fácil de usar. Es un SAX Parser, lo que significa que es un analizador basado en eventos. Encuentra cosas, y te dice acerca de eso.
¿qué no tiene sentido en la documentación en línea? – hhafez
No estoy seguro de lo que debo anular para que funcione. – PF1
No hay nada que anular. Usted hace un objeto separado y lo nombra delegado del analizador. En ese objeto, respondes a ciertos mensajes (algunos obligatorios, algunos opcionales) que te dicen qué ha encontrado el analizador. –