He estado buscando durante aproximadamente dos horas tratando de averiguar qué es este error y cómo resolverlo. documentos de Apple con gusto diceAyuda para resolver el error 39 de NSXMLParser: NSXMLParserAttributeNotStartedError
NSXMLParserAttributeNotStartedError Atributo no se ha iniciado. Disponible en Mac OS X v10.3 y posterior. Declarado en NSXMLParser.h.
pero no proporciona ninguna ayuda de ningún tipo. ¿Puede alguien ayudarme aquí? Cualquier empujón en la dirección correcta es muy apreciado.
En viewDidLoad, que tienen:
NSURL *xmlUrl = [NSURL fileURLWithPath:xmlFilepath];
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:xmlUrl];
[xmlParser setDelegate:self];
[xmlParser setShouldResolveExternalEntities:NO];
BOOL success = [xmlParser parse];
No hay problemas para obtener el código XML, que pueden leer con éxito hasta el elemento raíz, entonces se rompe.
El resto del código relacionado dice así:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
if([elementName isEqualToString:@"foo"]) {
foo = [[NSMutableArray alloc] init];
} else if([elementName isEqualToString:@"bar"]) {
bar = [[Bar alloc] init];
}
}
- (void)parser:(NSXMLParser *)parser foundAttributeDeclarationWithName:(NSString *)attributeName forElement:(NSString *)elementName type:(NSString *)type defaultValue:(NSString *)defaultValue {
if ([elementName isEqualToString:@"bar"]) {
if ([attributeName isEqualToString:@"barAttrib1"]) {
[bar setBarAttrib1:[defaultValue intValue]];
} else if ([attributeName isEqualToString:@"barAttrib2"]) {
[bar setBarAttrib2:defaultValue];
}
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
// nothing inside the elements, just attributes
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if ([elementName isEqualToString:@"bar"]) {
[foo addObject:bar];
[bar release];
bar = nil;
}
}
Gracias de antemano.
EDIT: xml de ejemplo
<foo>
<bar barAttrib1=1 barAttrib2="hello" />
<bar barAttrib1=2 barAttrib2="world" />
</foo>
Por favor, puesto el ejemplo XML demasiado – Yuji
Yuji, por favor ver post actualizado. ¡Gracias! – Altealice
+1 por hacer una muy buena pregunta. – Sid