Análisis XML - NSXMLPARSERERRORRORDOMAIN ERROR 5
-
14-11-2019 - |
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.
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é?