Cómo analizar archivos XML en Xcode

Share on facebook
Share on twitter
Share on linkedin
Share on telegram
Share on whatsapp
Share on email
Share on print
VALORACIÓN DEL ARTÍCULO:
5/5

Una tarea simple que es la columna vertebral de muchas aplicaciones es la capacidad de analizar archivos XML. Y, afortunadamente, Xcode hace que sea relativamente fácil analizar un archivo XML en Objective-C.

Un archivo XML puede contener cualquier cosa, desde datos básicos sobre su aplicación hasta un feed RSS para un sitio web. También pueden ser una excelente forma de actualizar información dentro de tu aplicación de forma remota, evitando así la necesidad de enviar un nuevo binario a Apple simplemente para añadir un nuevo elemento a una lista.

Entonces, ¿cómo procesamos los archivos XML en Xcode? El proceso contiene pasos para inicializar las variables a utilizar, iniciar el proceso del analizador XML, alimentar ese proceso con un archivo, el inicio de un elemento individual, los caracteres (valor) dentro del elemento, el final de un elemento individual y el final del proceso de análisis.

En este ejemplo, analizaremos un archivo de Internet pasándole una dirección web (URL) determinada.

Comenzaremos con la construcción del archivo de cabecera. Este es un ejemplo de un archivo de cabecera muy básico para un controlador de vista detallada con los requisitos mínimos para analizar nuestro archivo:

@interface RootViewController : UITableViewController {
DetailViewController *detailViewController;
NSXMLParser *rssParser;
NSMutableArray *s;
NSMutableDiccionario *item;
NSString *currentElement;
NSMutableString *ElementValue;
> Valor del elementoBOOL errorParsing;
}
@propiedad (no atómico, retener) IBOutlet DetailViewController *detailViewController;
- (void)parseXMLFileAtURL:(NSString *)URL;

La función parseXMLFileAtURL iniciará el proceso por nosotros. Cuando termine, el NSMutableArray “s” retendrá nuestros datos. La matriz estará formada por diccionarios mutables con claves relacionadas con los nombres de campo en el archivo XML.

Ahora que hemos configurado las variables necesarias, pasaremos a la reunión del proceso en el archivo.m:Pre data-type=”code”>- (void)parserDidStartDocument:(NSXMLParser *)parser{
(NSXMLParser *)parser{
)NSLog(@”Archivo encontrado y análisis iniciado”);
}

>

Esta función se ejecuta al inicio del proceso. No hay necesidad de poner nada en esta función, pero si desea realizar una tarea cuando el archivo comienza a ser analizado, aquí es donde usted pondría su código.

- (void)parseXMLFileAtURL:(NSString *)URL
(NSString *){
>NSString *agentString = @"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; es-us) AppleWebKit/525.27.1 (KHTML, como Gecko) Version/3.2.1 Safari/525.27.1";
>.NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:
[NSURL URLWithString:URL]];
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.request setValue:agentString forHTTPHeaderField:@"User-Agent"];
xmlFile = [ NSURLConnection sendSynchronousRequest:request returningResponse: nil error: nil ];
s = [[NSMutableArray alloc] init];
errorParsing=NO;
rssParser = [[NSXMLParser alloc] initWithData:xmlFile];
rssParser setDelegate:self];
// Puede que tenga que activar algunas de estas opciones dependiendo del tipo de archivo XML que esté analizando.rssParser setShouldProcessNamespaces:NO];
rssParser setShouldReportNamespacePrefixes:NO];
rssParser setShouldResolveExternalEntities:NO];
[rssParser parse];
}

>

Esta función le indica al motor que descargue un archivo en una dirección web (URL) en particular e inicie el proceso de análisis. Le decimos al servidor remoto que somos un Safari que se ejecuta en Mac en caso de que el servidor intente redirigir el iPhone/iPad a una versión móvil.
Las opciones al final son específicas para ciertos archivos XML. La mayoría de los archivos RSS y los archivos XML genéricos no necesitarán que estén activados.- (void)parser:(NSXMLParser *)parser parseErrorOcurred:(NSError *)parseError {
)NSString *errorString =[NSString stringWithFormat:@”Error code %i”,[parseError code]]];
NSLog(@”Error parsing XML: %@”, errorString);
errorParsing=YES;
}

<
Se trata de un sencillo enrutamiento de comprobación de errores que establecerá un valor binario si encuentra un error. Es posible que necesite algo más específico aquí, dependiendo de lo que esté haciendo. Si simplemente necesita ejecutar algún código después del procesamiento en caso de error, la variable binaria errorParsing puede ser llamada en ese momento.- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)namespaceURI qualifiedName:(NSString *)qAtributos de nombre:(NSDictionary *)attributeDict{
>.currentElement =[elementName copy];
.ElementValue = [[NSMutableString alloc] init];
si ([elementName isEqualToString:@”item”]) {
item = [ [[NSMutableDictionary alloc] init];
}
La carne del analizador XML contiene tres funciones, una que se ejecuta al principio de un elemento individual, otra que se ejecuta en medio del análisis del elemento y otra que se ejecuta al final del elemento.

Para este ejemplo, analizaremos un archivo similar a los archivos RSS que descomponen los elementos en grupos bajo el encabezado “items” dentro del archivo XML. Al comienzo del proceso, estamos comprobando el nombre del elemento “item” y asignando nuestro diccionario de ítems cuando se detecta un nuevo grupo. De lo contrario, inicializamos nuestra variable para el valor.- (void)parser:(NSXMLParser *)parser foundCaracters:(NSString *)string{
ElementValue appendString:string];
}

>

Esta es la parte fácil. Cuando encontramos caracteres, simplemente los añadimos a nuestra variable “ElementValue”.- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
)si ([elementName isEqualToString:@”item”]) {
s addObject:[item copy]];
} si no {
ítem setObject:ElementValue forKey:elementName];
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>””””””””””””-“””-“””- el elemento de la que se ejecutó el íb>.”””””>.}
}

>

Cuando terminamos de procesar un elemento, tenemos que hacer una de dos cosas: (1) Si el elemento final es “item”, hemos terminado nuestro grupo, por lo que añadiremos nuestro diccionario a nuestra matriz de “s”. O (2) si el elemento no es “item”, fijaremos el valor en nuestro diccionario con una clave que coincida con el nombre del elemento. (Esto significa que no necesitamos una variable individual para cada campo dentro del archivo XML. Podemos procesarlos un poco más dinámicamente.)- (void)parserDidEndDocument:(NSXMLParser *) parser {
if (errorParsing == NO)
br>{
>NSLog(@”XML processing done!”);
} si no {
NSLog(@”Error occurred during XML processing”);
}
}

>

Esta es la última función necesaria para nuestra rutina de análisis. Simplemente termina el documento. Pondrás aquí cualquier código que quieras para terminar el proceso o cualquier cosa especial que quieras hacer en caso de error.

Una cosa que muchas aplicaciones pueden querer hacer aquí es guardar los datos y/o el archivo XML en un archivo del dispositivo. De esta manera, si el usuario no está conectado a Internet la próxima vez que cargue la aplicación, todavía puede obtener esta información.

Por supuesto, no podemos olvidar la parte más importante: decirle a su aplicación que analice el archivo (¡y darle una dirección web para encontrarlo!).

Para iniciar el proceso, sólo tiene que añadir esta línea de código al lugar apropiado donde desea realizar el procesamiento XML:

[self parseXMLFileAtURL:@"http://www.webaddress.com/file.xml"];

Deja un comentario

TAMBIÉN TE INTERESA

como-desinstalar-mcafee-del-ordenador

3 opciones para desinstalar Mcafee al completo

Este es un artículo que te enseñará a desinstalar Mcafee al completo de tu ordenador. Seguro que si te has comprado un PC, habrás notado que hay programas o aplicaciones que vienen por defecto y una de ellas es el antivirus Mcafee.   Este antivirus es uno de los más conocidos y populares del mercado,

Kodi

Los 3 mejores Addons Kodi del momento

Si tienes un Kodi, es posible que tengas varios Addons. En este artículo te sugerimos los mejores Addons Kodi que existen en la actualidad.   Aunque ya hemos hablado de este tipo de programas, lo primero que vamos a proponerte es recordar que Kodi es una aplicación para todo tipo de dispositivos que permite abrir

607123000 quien es

607123000, quién es y por qué te llaman tanto desde este número

Seguro que últimamente has recibido llamadas de este número: 607123000. En este artículo te mostraremos quién es, porque tanta insistencia y cómo evitar que te vuelvan a llamar si es que lo consideras oportuno.   Índice de contenidos1 607123000, quién es1.1 Un teléfono Vodafone que puede parecerse a otro cualquiera1.2 Muy similar al clásico 123

pasos-para-instalar-certificado-digital-en-Chrome

Instalar el certificado digital en Chrome paso a paso

En este artículo te enseñamos a instalar tu certificado digital en Chrome para poder hacer las muchas gestiones que se pueden hacer con este documento electrónico.   Antes de pasar a este breve y sencillo tutorial, nos detendremos en otro proceso, el de la obtención del certificado digital. La solicitud y obtención de un certificado

desinstalar-aplicaciones-en-Mac

Cómo desinstalar aplicaciones en Mac fácilmente

Desinstalar aplicaciones en Mac es un proceso muy sencillo, aunque es lógico que muchos principiantes en este sistema operativa tengan sus dudas. Y es que cuando has estado toda la vida operando en entornos Windows u otros como Linux, puedes estar algo perdido en acciones tan básicas como instalar o desinstalar aplicaciones en Mac. Índice

discos-duros-externos

Discos duros externos, la guía de compra que necesitas

Todo el mundo necesita discos duros externos. Aunque hoy los ordenadores dispongan de mucha memoria interna y la nube se haya consolidado en el mercado, estos aparatos siguen siendo necesarios para guardar todo tipo de información.   De eso se trata, de guardar la mucha información que hoy disponemos en archivos. A diferencia de la