- Registriert
- 28.02.10
- Beiträge
- 23
Hi,
mein RSS Parser funktioniert soweit super. Nur die description mit CDATA wird nicht ausgelesen.
Kann mir vlt. jemand helfen, was ich an dem Code entsprechendes ändern muss?
Lieben Dank
Matthias
mein RSS Parser funktioniert soweit super. Nur die description mit CDATA wird nicht ausgelesen.
Kann mir vlt. jemand helfen, was ich an dem Code entsprechendes ändern muss?
Code:
[COLOR=#77482D]#import [/COLOR][COLOR=#CE2E24]"BlogRssParser.h"[/COLOR][COLOR=#CE2E24][COLOR=#77482d]#import [/COLOR]"BlogRss.h"[/COLOR]
[COLOR=#B731A1]@implementation[COLOR=#000000] BlogRssParser[/COLOR][/COLOR]
[COLOR=#b731a1]@synthesize[/COLOR] currentItem = [COLOR=#518187]_currentItem[/COLOR];
[COLOR=#b731a1]@synthesize[/COLOR] currentItemValue = [COLOR=#518187]_currentItemValue[/COLOR];
[COLOR=#b731a1]@synthesize[/COLOR] rssItems = [COLOR=#518187]_rssItems[/COLOR];
[COLOR=#b731a1]@synthesize[/COLOR] delegate = [COLOR=#518187]_delegate[/COLOR];
[COLOR=#b731a1]@synthesize[/COLOR] retrieverQueue = [COLOR=#518187]_retrieverQueue[/COLOR];
- ([COLOR=#b731a1]id[/COLOR])init{
[COLOR=#b731a1]if[/COLOR](![[COLOR=#b731a1]super[/COLOR] [COLOR=#3c2280]init[/COLOR]]){
[COLOR=#B731A1][COLOR=#000000] [/COLOR]returnnil[COLOR=#000000];[/COLOR][/COLOR]
}
[COLOR=#6F41A8][COLOR=#000000] [/COLOR][COLOR=#518187]_rssItems[/COLOR][COLOR=#000000] = [[[/COLOR]NSMutableArray[COLOR=#3c2280]alloc[/COLOR][COLOR=#000000]][/COLOR][COLOR=#3c2280]init[/COLOR][COLOR=#000000]];[/COLOR][/COLOR]
[COLOR=#B731A1][COLOR=#000000] [/COLOR]returnself[COLOR=#000000];[/COLOR][/COLOR]
}
- ([COLOR=#6f41a8]NSOperationQueue[/COLOR] *)retrieverQueue {
[COLOR=#518187][COLOR=#000000] [/COLOR][COLOR=#b731a1]if[/COLOR][COLOR=#000000]([/COLOR][COLOR=#b731a1]nil[/COLOR][COLOR=#000000] == [/COLOR]_retrieverQueue[COLOR=#000000]) {[/COLOR][/COLOR]
[COLOR=#6F41A8][COLOR=#000000] [/COLOR][COLOR=#518187]_retrieverQueue[/COLOR][COLOR=#000000] = [[[/COLOR]NSOperationQueue[COLOR=#3c2280]alloc[/COLOR][COLOR=#000000]] [/COLOR][COLOR=#3c2280]init[/COLOR][COLOR=#000000]];[/COLOR][/COLOR]
[COLOR=#3C2280][COLOR=#000000] [/COLOR][COLOR=#518187]_retrieverQueue[/COLOR][COLOR=#000000].[/COLOR]maxConcurrentOperationCount[COLOR=#000000] = [/COLOR][COLOR=#2633d5]1[/COLOR][COLOR=#000000];[/COLOR][/COLOR]
}
[COLOR=#518187][COLOR=#000000] [/COLOR][COLOR=#b731a1]return[/COLOR]_retrieverQueue[COLOR=#000000];[/COLOR][/COLOR]
}
- ([COLOR=#b731a1]void[/COLOR])startProcess{
[COLOR=#b731a1]SEL[/COLOR] method = [COLOR=#b731a1]@selector[/COLOR](fetchAndParseRss);
[COLOR=#3C2280][COLOR=#000000] [[[/COLOR][COLOR=#b731a1]self[/COLOR][COLOR=#33595d]rssItems[/COLOR][COLOR=#000000]] [/COLOR]removeAllObjects[COLOR=#000000]];[/COLOR][/COLOR]
[COLOR=#6F41A8][COLOR=#000000] [/COLOR]NSInvocationOperation[COLOR=#000000] *op = [[[/COLOR]NSInvocationOperation[COLOR=#3c2280]alloc[/COLOR][COLOR=#000000]] [/COLOR][COLOR=#3c2280]initWithTarget[/COLOR][COLOR=#000000]:[/COLOR][COLOR=#b731a1]self[/COLOR][/COLOR]
[COLOR=#3c2280]selector[/COLOR]:method
[COLOR=#3c2280]object[/COLOR]:[COLOR=#b731a1]nil[/COLOR]];
[COLOR=#518187][COLOR=#000000] [[/COLOR][COLOR=#b731a1]self[/COLOR][COLOR=#000000].[/COLOR]retrieverQueue[COLOR=#3c2280]addOperation[/COLOR][COLOR=#000000]:op];[/COLOR][/COLOR]
[op [COLOR=#3c2280]release[/COLOR]];
}
-([COLOR=#b731a1]BOOL[/COLOR])fetchAndParseRss{
[COLOR=#6F41A8][COLOR=#000000] [/COLOR]NSAutoreleasePool[COLOR=#000000] *pool = [[[/COLOR]NSAutoreleasePool[COLOR=#3c2280]alloc[/COLOR][COLOR=#000000]] [/COLOR][COLOR=#3c2280]init[/COLOR][COLOR=#000000]];[/COLOR][/COLOR]
[COLOR=#6F41A8][COLOR=#000000] [[/COLOR]UIApplication[COLOR=#3c2280]sharedApplication[/COLOR][COLOR=#000000]].[/COLOR]networkActivityIndicatorVisible[COLOR=#000000] = [/COLOR][COLOR=#b731a1]YES[/COLOR][COLOR=#000000];[/COLOR][/COLOR]
[COLOR=#0A830F][COLOR=#000000] [/COLOR]//To suppress the leak in NSXMLParser[/COLOR]
[COLOR=#3C2280][COLOR=#000000] [[[/COLOR][COLOR=#6f41a8]NSURLCache[/COLOR]sharedURLCache[COLOR=#000000]] [/COLOR]setMemoryCapacity[COLOR=#000000]:[/COLOR][COLOR=#2633d5]0[/COLOR][COLOR=#000000]];[/COLOR][/COLOR]
[COLOR=#3C2280][COLOR=#000000] [[[/COLOR][COLOR=#6f41a8]NSURLCache[/COLOR]sharedURLCache[COLOR=#000000]] [/COLOR]setDiskCapacity[COLOR=#000000]:[/COLOR][COLOR=#2633d5]0[/COLOR][COLOR=#000000]];[/COLOR][/COLOR]
[COLOR=#CE2E24][COLOR=#000000] [/COLOR][COLOR=#6f41a8]NSURL[/COLOR][COLOR=#000000] *url = [[/COLOR][COLOR=#6f41a8]NSURL[/COLOR][COLOR=#3c2280]URLWithString[/COLOR][COLOR=#000000]:[/COLOR]@"http://www.meinfeed.de"[COLOR=#000000]];[/COLOR][/COLOR]
[COLOR=#b731a1]BOOL[/COLOR] success = [COLOR=#b731a1]NO[/COLOR];
[COLOR=#3C2280][COLOR=#000000] [/COLOR][COLOR=#6f41a8]NSXMLParser[/COLOR][COLOR=#000000] *parser = [[[/COLOR][COLOR=#6f41a8]NSXMLParser[/COLOR]alloc[COLOR=#000000]] [/COLOR]initWithContentsOfURL[COLOR=#000000]:url];[/COLOR][/COLOR]
[parser [COLOR=#3c2280]setDelegate[/COLOR]:[COLOR=#b731a1]self[/COLOR]];
[COLOR=#3C2280][COLOR=#000000] [parser [/COLOR]setShouldProcessNamespaces[COLOR=#000000]:[/COLOR][COLOR=#b731a1]YES[/COLOR][COLOR=#000000]];[/COLOR][/COLOR]
[COLOR=#3C2280][COLOR=#000000] [parser [/COLOR]setShouldReportNamespacePrefixes[COLOR=#000000]:[/COLOR][COLOR=#b731a1]YES[/COLOR][COLOR=#000000]];[/COLOR][/COLOR]
[COLOR=#3C2280][COLOR=#000000] [parser [/COLOR]setShouldResolveExternalEntities[COLOR=#000000]:[/COLOR][COLOR=#b731a1]NO[/COLOR][COLOR=#000000]];[/COLOR][/COLOR]
success = [parser [COLOR=#3c2280]parse[/COLOR]];
[parser [COLOR=#3c2280]release[/COLOR]];
[pool [COLOR=#3c2280]drain[/COLOR]];
[COLOR=#b731a1]return[/COLOR] success;
}
- ([COLOR=#b731a1]void[/COLOR])parser:([COLOR=#6f41a8]NSXMLParser[/COLOR] *)parser didStartElement:([COLOR=#6f41a8]NSString[/COLOR] *)elementName namespaceURI:([COLOR=#6f41a8]NSString[/COLOR] *)namespaceURI
qualifiedName:([COLOR=#6f41a8]NSString[/COLOR] *)qualifiedName attributes:([COLOR=#6f41a8]NSDictionary[/COLOR] *)attributeDict{
[COLOR=#b731a1]if[/COLOR]([COLOR=#b731a1]nil[/COLOR] != qualifiedName){
elementName = qualifiedName;
}
[COLOR=#b731a1]if[/COLOR] ([elementName [COLOR=#3c2280]isEqualToString[/COLOR]:[COLOR=#ce2e24]@"item"[/COLOR]]) {
[COLOR=#3C2280][COLOR=#000000] [/COLOR][COLOR=#b731a1]self[/COLOR][COLOR=#000000].[/COLOR][COLOR=#518187]currentItem[/COLOR][COLOR=#000000] = [[[[/COLOR][COLOR=#518187]BlogRss[/COLOR]alloc[COLOR=#000000]][/COLOR]init[COLOR=#000000]][/COLOR]autorelease[COLOR=#000000]];[/COLOR][/COLOR]
} [COLOR=#b731a1]else[/COLOR] [COLOR=#b731a1]if[/COLOR]([elementName [COLOR=#3c2280]isEqualToString[/COLOR]:[COLOR=#ce2e24]@"title"[/COLOR]] ||
[elementName [COLOR=#3c2280]isEqualToString[/COLOR]:[COLOR=#ce2e24]@"link"[/COLOR]] ||
[elementName [COLOR=#3c2280]isEqualToString[/COLOR]:[COLOR=#ce2e24]@"pubDate"[/COLOR]] ||
[elementName [COLOR=#3c2280]isEqualToString[/COLOR]:[COLOR=#ce2e24]@"guid"[/COLOR]] ||
[elementName [COLOR=#3c2280]isEqualToString[/COLOR]:[COLOR=#ce2e24]@"description"[/COLOR]]) {
[COLOR=#518187][COLOR=#000000] [/COLOR][COLOR=#b731a1]self[/COLOR][COLOR=#000000].[/COLOR]currentItemValue[COLOR=#000000] = [[/COLOR][COLOR=#6f41a8]NSMutableString[/COLOR][COLOR=#3c2280]string[/COLOR][COLOR=#000000]];[/COLOR][/COLOR]
} [COLOR=#b731a1]else[/COLOR] {
[COLOR=#518187][COLOR=#000000] [/COLOR][COLOR=#b731a1]self[/COLOR][COLOR=#000000].[/COLOR]currentItemValue[COLOR=#000000] = [/COLOR][COLOR=#b731a1]nil[/COLOR][COLOR=#000000];[/COLOR][/COLOR]
}
}
- ([COLOR=#b731a1]void[/COLOR])parser:([COLOR=#6f41a8]NSXMLParser[/COLOR] *)parser didEndElement:([COLOR=#6f41a8]NSString[/COLOR] *)elementName namespaceURI:([COLOR=#6f41a8]NSString[/COLOR] *)namespaceURI qualifiedName:([COLOR=#6f41a8]NSString[/COLOR] *)qName {
[COLOR=#b731a1]if[/COLOR]([COLOR=#b731a1]nil[/COLOR] != qName){
elementName = qName;
}
[COLOR=#b731a1]if[/COLOR]([elementName [COLOR=#3c2280]isEqualToString[/COLOR]:[COLOR=#ce2e24]@"title"[/COLOR]]){
[COLOR=#518187][COLOR=#000000] [/COLOR][COLOR=#b731a1]self[/COLOR][COLOR=#000000].[/COLOR]currentItem[COLOR=#000000].[/COLOR]title[COLOR=#000000] = [/COLOR][COLOR=#b731a1]self[/COLOR][COLOR=#000000].[/COLOR]currentItemValue[COLOR=#000000];[/COLOR][/COLOR]
}[COLOR=#b731a1]else[/COLOR] [COLOR=#b731a1]if[/COLOR]([elementName [COLOR=#3c2280]isEqualToString[/COLOR]:[COLOR=#ce2e24]@"link"[/COLOR]]){
[COLOR=#518187][COLOR=#000000] [/COLOR][COLOR=#b731a1]self[/COLOR][COLOR=#000000].[/COLOR]currentItem[COLOR=#000000].[/COLOR]linkUrl[COLOR=#000000] = [/COLOR][COLOR=#b731a1]self[/COLOR][COLOR=#000000].[/COLOR]currentItemValue[COLOR=#000000];[/COLOR][/COLOR]
}[COLOR=#b731a1]else[/COLOR] [COLOR=#b731a1]if[/COLOR]([elementName [COLOR=#3c2280]isEqualToString[/COLOR]:[COLOR=#ce2e24]@"pubDate"[/COLOR]]){
[COLOR=#6F41A8][COLOR=#000000] [/COLOR]NSDateFormatter[COLOR=#000000] *formatter = [[[/COLOR]NSDateFormatter[COLOR=#3c2280]alloc[/COLOR][COLOR=#000000]] [/COLOR][COLOR=#3c2280]init[/COLOR][COLOR=#000000]];[/COLOR][/COLOR]
[COLOR=#CE2E24][COLOR=#000000] [formatter [/COLOR][COLOR=#3c2280]setDateFormat[/COLOR][COLOR=#000000]:[/COLOR]@"yyyy-MM-dd'T'HH:mm:ss'Z'"[COLOR=#000000]];[/COLOR][/COLOR]
[COLOR=#518187][COLOR=#000000] [/COLOR][COLOR=#b731a1]self[/COLOR][COLOR=#000000].[/COLOR]currentItem[COLOR=#000000].[/COLOR]pubDate[COLOR=#000000] = [formatter [/COLOR][COLOR=#3c2280]dateFromString[/COLOR][COLOR=#000000]:[/COLOR][COLOR=#b731a1]self[/COLOR][COLOR=#000000].[/COLOR]currentItemValue[COLOR=#000000]];[/COLOR][/COLOR]
[formatter [COLOR=#3c2280]release[/COLOR]];
}[COLOR=#b731a1]else[/COLOR] [COLOR=#b731a1]if[/COLOR]([elementName [COLOR=#3c2280]isEqualToString[/COLOR]:[COLOR=#ce2e24]@"guid"[/COLOR]]){
[COLOR=#518187][COLOR=#000000] [/COLOR][COLOR=#b731a1]self[/COLOR][COLOR=#000000].[/COLOR]currentItem[COLOR=#000000].[/COLOR]guidUrl[COLOR=#000000] = [/COLOR][COLOR=#b731a1]self[/COLOR][COLOR=#000000].[/COLOR]currentItemValue[COLOR=#000000];[/COLOR][/COLOR]
}[COLOR=#b731a1]else[/COLOR] [COLOR=#b731a1]if[/COLOR]([elementName [COLOR=#3c2280]isEqualToString[/COLOR]:[COLOR=#ce2e24]@"description"[/COLOR]]){
[COLOR=#518187][COLOR=#000000] [/COLOR][COLOR=#b731a1]self[/COLOR][COLOR=#000000].[/COLOR]currentItem[COLOR=#000000].[/COLOR]description[COLOR=#000000] = [/COLOR][COLOR=#b731a1]self[/COLOR][COLOR=#000000].[/COLOR]currentItemValue[COLOR=#000000];[/COLOR][/COLOR]
}[COLOR=#b731a1]else[/COLOR] [COLOR=#b731a1]if[/COLOR]([elementName [COLOR=#3c2280]isEqualToString[/COLOR]:[COLOR=#ce2e24]@"item"[/COLOR]]){
[[[COLOR=#b731a1]self[/COLOR] [COLOR=#33595d]rssItems[/COLOR]] [COLOR=#3c2280]addObject[/COLOR]:[COLOR=#b731a1]self[/COLOR].[COLOR=#518187]currentItem[/COLOR]];
}
}
- ([COLOR=#b731a1]void[/COLOR])parser:([COLOR=#6f41a8]NSXMLParser[/COLOR] *)parser foundCharacters:([COLOR=#6f41a8]NSString[/COLOR] *)string {
[COLOR=#518187][COLOR=#000000] [/COLOR][COLOR=#b731a1]if[/COLOR][COLOR=#000000]([/COLOR][COLOR=#b731a1]nil[/COLOR][COLOR=#000000] != [/COLOR][COLOR=#b731a1]self[/COLOR][COLOR=#000000].[/COLOR]currentItemValue[COLOR=#000000]){[/COLOR][/COLOR]
[COLOR=#518187][COLOR=#000000] [[/COLOR][COLOR=#b731a1]self[/COLOR][COLOR=#000000].[/COLOR]currentItemValue[COLOR=#3c2280]appendString[/COLOR][COLOR=#000000]:string];[/COLOR][/COLOR]
}
}
- ([COLOR=#b731a1]void[/COLOR])parser:([COLOR=#6f41a8]NSXMLParser[/COLOR] *)parser foundCDATA:([COLOR=#6f41a8]NSData[/COLOR] *)CDATABlock{
[COLOR=#0A830F][COLOR=#000000] [/COLOR]// Irgendwas Hier !?!?![/COLOR]
}
- ([COLOR=#b731a1]void[/COLOR])parser:([COLOR=#6f41a8]NSXMLParser[/COLOR] *)parser parseErrorOccurred:([COLOR=#6f41a8]NSError[/COLOR] *)parseError{
[COLOR=#3C2280][COLOR=#000000] [/COLOR][COLOR=#b731a1]if[/COLOR][COLOR=#000000](parseError.[/COLOR]code[COLOR=#000000] != [/COLOR]NSXMLParserDelegateAbortedParseError[COLOR=#000000]) {[/COLOR][/COLOR]
[COLOR=#6F41A8][COLOR=#000000] [[/COLOR]UIApplication[COLOR=#3c2280]sharedApplication[/COLOR][COLOR=#000000]].[/COLOR]networkActivityIndicatorVisible[COLOR=#000000] = [/COLOR][COLOR=#b731a1]NO[/COLOR][COLOR=#000000];[/COLOR][/COLOR]
[([COLOR=#b731a1]id[/COLOR])[[COLOR=#b731a1]self[/COLOR] [COLOR=#33595d]delegate[/COLOR]] [COLOR=#3c2280]performSelectorOnMainThread[/COLOR]:[COLOR=#b731a1]@selector[/COLOR](processHasErrors)
[COLOR=#3c2280]withObject[/COLOR]:[COLOR=#b731a1]nil[/COLOR]
[COLOR=#3c2280]waitUntilDone[/COLOR]:[COLOR=#b731a1]NO[/COLOR]];
}
}
- ([COLOR=#b731a1]void[/COLOR])parserDidEndDocument:([COLOR=#6f41a8]NSXMLParser[/COLOR] *)parser {
[([COLOR=#b731a1]id[/COLOR])[[COLOR=#b731a1]self[/COLOR] [COLOR=#33595d]delegate[/COLOR]] [COLOR=#3c2280]performSelectorOnMainThread[/COLOR]:[COLOR=#b731a1]@selector[/COLOR](processCompleted)
[COLOR=#3c2280]withObject[/COLOR]:[COLOR=#b731a1]nil[/COLOR]
[COLOR=#3c2280]waitUntilDone[/COLOR]:[COLOR=#b731a1]NO[/COLOR]];
[COLOR=#6F41A8][COLOR=#000000] [[/COLOR]UIApplication[COLOR=#3c2280]sharedApplication[/COLOR][COLOR=#000000]].[/COLOR]networkActivityIndicatorVisible[COLOR=#000000] = [/COLOR][COLOR=#b731a1]NO[/COLOR][COLOR=#000000];[/COLOR][/COLOR]
}
-([COLOR=#b731a1]void[/COLOR])dealloc{
[COLOR=#518187][COLOR=#000000] [/COLOR][COLOR=#b731a1]self[/COLOR][COLOR=#000000].[/COLOR]currentItem[COLOR=#000000] = [/COLOR][COLOR=#b731a1]nil[/COLOR][COLOR=#000000];[/COLOR][/COLOR]
[COLOR=#518187][COLOR=#000000] [/COLOR][COLOR=#b731a1]self[/COLOR][COLOR=#000000].[/COLOR]currentItemValue[COLOR=#000000] = [/COLOR][COLOR=#b731a1]nil[/COLOR][COLOR=#000000];[/COLOR][/COLOR]
[COLOR=#518187][COLOR=#000000] [/COLOR][COLOR=#b731a1]self[/COLOR][COLOR=#000000].[/COLOR]delegate[COLOR=#000000] = [/COLOR][COLOR=#b731a1]nil[/COLOR][COLOR=#000000];[/COLOR][/COLOR]
[COLOR=#518187][COLOR=#000000] [[/COLOR]_rssItems[COLOR=#3c2280]release[/COLOR][COLOR=#000000]];[/COLOR][/COLOR]
[COLOR=#3C2280][COLOR=#000000] [[/COLOR][COLOR=#b731a1]super[/COLOR]dealloc[COLOR=#000000]];[/COLOR][/COLOR]
}
[COLOR=#B731A1]@end[/COLOR]
Lieben Dank
Matthias