1

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];
}
4

0 に答える 0