Pregunta

Estoy tratando de analizar un archivo XML.Funcionó muy bien, hasta hoy ...

Así es como empiezo a analizar el XML:

NSString *link = [[NSString alloc] init];
link = @"link_to_xml_file";

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:link] 
                                             cachePolicy:NSURLRequestReturnCacheDataElseLoad 
                                         timeoutInterval:30.0];

connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];

y aquí es cómo estoy usando los datos recibidos:

- (void)connection:(NSURLConnection *)theConnection 
    didReceiveData:(NSData *)incrementalData 
{
    if (data == nil)
        data = [[NSMutableData alloc] init];

    [data appendData:incrementalData];

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *filePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.plist",actual]];

    NSError *parseError = nil;
    NSDictionary *xmlDictionary = [XMLReader dictionaryForXMLString:[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] error:&parseError];

    if (parseError != nil) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:[parseError localizedDescription] delegate:nil cancelButtonTitle:@"Zurück" otherButtonTitles:nil];
        [alert show];
        [alert release];
    } //shows an alertview with NSXMLParserErrorDomain error 5

    NSLog(@"String: %@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]); //returns null

    NSLog(@"Dictionary: %@",xmlDictionary); //returns null

    NSMutableDictionary *tempDictForAddDate = [[NSMutableDictionary alloc] initWithDictionary:xmlDictionary];

    NSDateFormatter *originalDate = [[NSDateFormatter alloc] init];
    [originalDate setDateFormat:@"dd.MM.yyyy"];

    NSString *today = [originalDate stringFromDate:[NSDate date]];

    [tempDictForAddDate setObject:today forKey:@"updated"];

    [tempDictForAddDate writeToFile:filePath atomically:YES];

    self.contentList = [[tempDictForAddDate objectForKey:@"xmlObject"] objectForKey:@"event"];

    [self sortContent];
}

El archivo XML funciona en mi navegador.Y cada etiqueta está cerrada.No hay errores, pero nunca obtengo los datos del archivo.

Espero que alguien pueda ayudar.

mavrick3.

¿Fue útil?

Solución

Usted está (sabiamente) usando la conexión de URL asíncrona, pero esto significa que su delegado Didreceivedata se llamará varias veces a medida que aparezca los datos, por lo que no se completará en el punto en que lo está analizando.

Probablemente desee mover el análisis en el siguiente método del delegado.

- (void)connectionDidFinishLoading:(NSURLConnection *)connection

Consulte Documentación de Appleaquí

Editar:

Siempre una buena idea para validar formalmente su XML - Tiendo a usar las herramientas W3C http://www.ww3schools.com/xml/xml_validator.asp

Además, cuando las cosas que solían trabajar dejar de funcionar, siempre me pregunto qué ha cambiado?¿Es diferente el archivo?¿Es más grande?¿Está seguro de que está presente en el servidor y su navegador no está utilizando una versión en caché?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top