NSXMLParserを使用してホストされたXMLファイルを解析しています。更新ボタンをクリックすると、XMLコンテンツが変更されてもNSXMLParserコンテンツは更新されません。NSXMLParserにはXMLファイルのキャッシュがあると思いますが、NSXMLParserキャッシュをクリアするにはどうすればよいですか。
また、リストに追加した後、didEndElementのcurrentTitle、currentLink、アイテムを解放する必要がありますか?
コード:
NSMutableDictionary *item;
NSString * currentElement;
NSMutableString * currentTitle, * currentLink;
NSMutableArray *list;
- (void)parseXMLFileAtURL:(NSString *)URL {
NSURL *xmlURL = [NSURL URLWithString:URL];
NSXMLParser *rssParser = [[NSXMLParser alloc] initWithContentsOfURL:xmlURL];
[rssParser setShouldProcessNamespaces:NO];
[rssParser setShouldReportNamespacePrefixes:NO];
[rssParser setShouldResolveExternalEntities:NO];
[rssParser parse];
[rssParser release];
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
currentElement = [elementName copy];
if ([elementName isEqualToString:@"item"]) {
item = [[NSMutableDictionary alloc] init];
currentTitle = [[NSMutableString alloc] init];
currentLink = [[NSMutableString alloc] init];
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
if ([currentElement isEqualToString:@"title"]) {
[currentTitle appendString:string];
} else if ([currentElement isEqualToString:@"url"]) {
[currentLink appendString:string];
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if ([elementName isEqualToString:@"item"]) {
[item setObject:currentLink forKey:@"link"];
[item setObject:currentTitle forKey:@"title"];
[list addObject:[item copy]];
}
}
- (void)parserDidEndDocument:(NSXMLParser *)parser {
[tableView reloadData];
}