При чтении локального XML-файла NSXMLParser возвращает NULL - PullRequest
2 голосов
/ 23 ноября 2010

У меня есть локальный XML-файл, который, как я знаю, содержит правильно сформированный XML-код UTF-8.Но NSXMLParser не будет анализировать корректность.

Путь к файлу:

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

Сохранение XML-файла из Интернета:

 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];

Разбор XML:

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

Если я попытаюсь выполнить синтаксический анализ NSURL "xml" напрямую, он сработает, но приведенный выше код вернет NULL и ошибок не будет.Я нашел другой пост здесь на форуме, описывающий ту же самую вещь, но я не могу найти его снова, и у поста не было ответов.

Надеюсь, кто-то может помочь!По сути, это всего лишь вопрос хранения веб-файла xml в файл, а затем передачи его в NSXMLParser.

1 Ответ

6 голосов
/ 23 ноября 2010

Изменить эту строку:

NSURL *xmlFile = [NSURL URLWithString:appFile];

к этому:

NSURL *xmlFile = [NSURL fileURLWithPath:appFile];

Поскольку appFile - это путь к локальной файловой системе, а не интернет-URL.

...