Я нашел другой пример для поддержки различных категорий каналов и нашел следующее решение:
Сначала объявите переменную в файле * .h.
@interface XMLParser : NSObject <NSXMLParserDelegate>{
...
NSMutableString * currentChannel;
}
Inфайл * .m синтезирует и выпускает переменную.В didStartElement спросите, над каким элементом вы сейчас работаете.Если это элемент канала, извлеките заголовок и сохраните его в объявленной выше переменной.
@implementation XMLParser
...
@synthesize currentChannel;
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
...
if ([elementName isEqualToString:@"item"]) {
...
}
// title is an attribute of the element channel
if ([currentElement isEqualToString:@"channel"]) {
[currentChannel appendString:[attributeDict objectForKey:@"title"]];
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if ([elementName isEqualToString:@"item"]) {
...
if ([currentChannel isEqualToString:@"Your Channel Name"]) {
if ([currentCategory isEqualToString:@"Your category name"]) {
[items addObject:[item copy]];
}
} else {
[items addObject:[item copy]];
}
}
}
В didEndElement спросите, принадлежит ли элемент определенному каналу,и если затем добавить его, только если это определенная категория.Таким образом, вы можете добавлять / показывать только RSS-каналы, если они принадлежат к определенной категории.
Так что я не проверял это, потому что канал имеет только одну категорию.Поэтому мне не нужно запрашивать название канала, чтобы показывать только определенные категории из определенного канала.Но я думаю, что это должно сработать.