NSXMLParser Отдельные три элемента - PullRequest
1 голос
/ 26 декабря 2010

Я анализирую xml-файл с тремя одинаковыми элементами: «im: imageLink». В настоящее время я добавляю все три ссылки в массив:

if ([currentElement isEqualToString:@"im:image"]) {   
    string = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    [imageLinks addObject:string];
} 

Я был бы очень признателен, если бы вы сказали мне, как я мог бы разделить каждый из трех элементов и поместить их в три разных массива.

1 Ответ

1 голос
/ 26 декабря 2010

Если я понимаю комментарии выше, вы хотите разделить элементы по атрибуту высоты, который, кажется, имеет 3 известных значения: 55, 60 и 170. В этом случае вы можете разделить их на основе словаря атрибутов.передается в синтаксический анализатор: didStartElement: ... call.Предполагая, что вы вызвали переменную атрибутов "attributeDict", ваш вызов будет выглядеть примерно так:

int height = [[attributeDict valueForKey:@"height"] intValue];

Оттуда вы можете использовать типичную конструкцию if ... then ... else для помещения результатов в триразные массивы.Нравится:

if ([currentElement isEqualToString:@"im:image"]) {   
    string = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    int height = [[attributeDict valueForKey:@"height"] intValue];
    if (55 == height) {[imageLinks55 addObject:string];}
    else if (60 == height) {[imageLinks60 addObject:string];}
    else if (170 == height) {[imageLinks170 addObject:string];}
    else {NSLog(@"Unrecognized height of an image!");}
}
...