Разбор XML из пакета приложения вместо URL - PullRequest
2 голосов
/ 19 февраля 2012

Я создаю приложение, которое анализирует XML с онлайн-сервера. Я хочу кешировать XML-файл локально в течение 24 часов. Как я могу изменить следующий код для чтения из файла в моей директории ресурсов?

parser = [[NSXMLParser alloc] initWithContentsOfURL: [NSURL URLWithString:url]];

1 Ответ

4 голосов
/ 19 февраля 2012

Вы можете получить путь к вашему XML-файлу, как показано ниже:

NSString* path = [[NSBundle mainBundle] pathForResource:@"yourxml" ofType:@"xml"];

, а затем получить экземпляр NSData, подобный следующему:

NSData *xmlData = [[NSMutableData alloc] initWithContentsOfFile:path];

и, наконец, вызвать

initWithData метод NSXMLParser.

Но вы не можете изменять содержимое пакета приложения.Файлы в комплекте (каталог ресурсов, который вы запрашивали) не могут быть изменены.

Есть другой способ сделать это:

  • захватить файл из Интернета и сохранить его вфайл списка свойств
  • используйте класс NSFileManager для сохранения и чтения вашего xml-файла

Пример с NSFileManager:

NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* documentsDirectoryPath = [paths objectAtIndex:0];
NSString* filePath = [documentsDirectoryPath stringByAppendingPathComponent:@"yourxml.xml"];

Фрагмент захватапуть к файлу XML, содержащийся в вашем каталоге документов.Это означает, что там уже есть файл.Для получения дополнительной информации см. NSFileManager class и How to Save-app-data-with-nscoding-and-nsfilemanager

Надеюсь, что это поможет.

...