00001
00002
00003
00004
00005
00006
00007
00008
00009 #import "TDParser.h"
00010
00011
00012 @implementation TDParser
00013
00014 @synthesize data;
00015
00016 - (id)initWithTarget:(id)theTarget andSelector:(SEL)theSelector {
00017 [super init];
00018 target = theTarget;
00019 selector = theSelector;
00020 return self;
00021 }
00022
00023 - (id)initWithData:(NSData *)aData {
00024 if (self = [super init]) {
00025 self.data = aData;
00026 }
00027 return self;
00028 }
00029
00030 - (void)dealloc {
00031 [data release];
00032 [error release];
00033 [results release];
00034 [currentString release];
00035 [super dealloc];
00036 }
00037
00038 - (NSMutableArray *)parseResults:(NSError **)parseError {
00039 NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
00040 [parser setDelegate:self];
00041 [parser setShouldProcessNamespaces:NO];
00042 [parser setShouldReportNamespacePrefixes:NO];
00043 [parser setShouldResolveExternalEntities:NO];
00044 [parser parse];
00045 [parser release];
00046
00047 if (error) {
00048 *parseError = error;
00049 return nil;
00050 }
00051 else {
00052 return results;
00053 }
00054 }
00055
00056 #pragma mark -
00057 #pragma mark NSXMLParser delegation methods
00058
00059 - (void)parserDidStartDocument:(NSXMLParser *)parser {
00060 if (results != nil) {
00061 [results release];
00062 results = nil;
00063 }
00064 results = [[NSMutableArray alloc] init];
00065 }
00066
00067 - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
00068 string = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
00069 if (!currentString) {
00070 currentString = [[NSMutableString alloc] initWithString:string];
00071 } else {
00072 [currentString appendString:string];
00073 }
00074 }
00075
00076 - (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError {
00077 error = [parseError retain];
00078 }
00079
00080 - (void)parserDidEndDocument:(NSXMLParser *)parser {
00081
00082
00083 }
00084
00085 @end