2010-11-23 18 views
2

J'ai un fichier xml local qui, je le sais, contient du format XML bien formaté UTF-8. Mais NSXMLParser n'analysera pas correclty.La lecture du fichier XML local rend le retour NSXMLParser NULL

chemin vers le fichier:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"example.xml"]; 

Sauvegarde du xml du web:

NSURL *xml = [NSURL URLWithString:@"http://www.example.com/example.xml"]; 
NSString *data = [[NSString alloc] initWithContentsOfURL:xml encoding:NSUTF8StringEncoding error:nil]; 
[data writeToFile:appFile atomically:YES encoding:NSUTF8StringEncoding error:nil]; 

Parsing xml:

NSURL *xmlFile = [NSURL URLWithString:appFile]; 
NSXMLParser *addressParser = [[NSXMLParser alloc] initWithContentsOfURL:xmlFile]; 

Si je tente l'analyse du NSURL "xml" directement ce fonctionne, mais le code ci-dessus retournera NULL et aucune erreur. J'ai trouvé un autre article ici sur le forum décrivant exactement la même chose, mais je ne peux pas le trouver à nouveau, et le poste n'avait pas de réponses.

Espérons que quelqu'un peut vous aider! Fondamentalement, il s'agit simplement de stocker un fichier XML dans un fichier, puis de l'envoyer à NSXMLParser.

Répondre

6

Modifier cette ligne:

NSURL *xmlFile = [NSURL URLWithString:appFile]; 

à ceci:

NSURL *xmlFile = [NSURL fileURLWithPath:appFile]; 

Parce que appFile est un chemin de système de fichiers local et non une URL Internet.