Чтение XML в документации описано большыми примерами. В статье я хочу показать работу с минимальным XML файлом и минимальным набором кода.
Пусть у нас в ресурсах есть файл с именем file.xml таким контентом:
<root>
<image name="img1"/>
</root>
Я покажу как вытянуть значение атрибута name.
Для работы с XML есть класс NSXMLParser. Инициализировать его объект можно так:
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"file" ofType:@"xml"];
NSData* data = [[NSData alloc] initWithContentsOfFile:filePath];
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
[parser setDelegate:self];//self - это указатель на класс, из которого будут вызываться делегаты для парсинга.
Потом добавляем в наш класс следующий метод, в котором прочитается значение атрибута name:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
NSString *im = [attributeDict valueForKey:@"name"];
NSLog(im);
}
Этот метод будет вызываться автоматически для каждого элемента.
И для того, что б запустить парсинг надо вызвать метод parse из объекта класса NSXMLParser.
В нашем случае это выглядит так:
BOOL isSuccessful = [parser parse];
Результатом метода parse будет YES — если чтение прошло нормально, и NO — если закончилось неудачей.
Можно также подобавлять методы, которые будут вызываться при старте чтения, в конце чтения, при появлении ошибки и т. д. Как они называются хорошо описано в документации.
Комментарии (0)
RSS свернуть / развернутьТолько зарегистрированные и авторизованные пользователи могут оставлять комментарии.