2012-04-06 3 views
0

Ich habe eine Klasse, die Methoden von NSXMLParser implementiert und ein XML-Dokument analysiert. Da die Klasse zum Analysieren mehrerer XML-Dokumente verwendet wird, ändern sich die Schlüssel, die an meine Klasse übergeben werden.Dynamisch NSString von NSArray erstellen - NSXMLParser

Wenn ich das Dokument analysiere, überprüfe ich die didStartElement und didEndElement meine Schlüssel und dann in den foundCharacters die Zeichenfolge in einem NSDictionary zu speichern. Das NSDictionary wird über einen Selektor an meinen Stellvertreter zurückgegeben.

Das Problem ist mit der foundCharacters -Methode, die Zeichenfolge, die gespeichert wird, ist teilweise im Dokument.

Was ich denke ist, einen NSString für jeden der Schlüssel und in den foundCharacters zu erstellen, eine Zeichenfolge an die dynamisch erstellte Zeichenfolge für diesen Schlüssel anhängig.

Hier ist mein Array.

Die in meinem Parser mit der folgenden Methode übergeben wird.

-(void) parseArticles:(NSString *)url keys:(NSArray *)findKeys containingString:(NSString *)containing withDelegate:(id)aDelegate { 

    keys = findKeys; 
    [self setDelegate:aDelegate]; 

    responseData = [NSMutableData data]; 
    NSURL *baseUrl = [NSURL URLWithString:url]; 

    NSLog(@"Loading URL: %@", url); 

    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; 
    NSURLRequest *request = [NSURLRequest requestWithURL:baseUrl]; 
    (void)[[NSURLConnection alloc] initWithRequest:request delegate:self]; 

} 

Hier ist meine Foundcharacters Methode

-(void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { 
    for(NSString *toFind in keys){ 
     if([currentItem isEqualToString:toFind]) [item setObject:string forKey:toFind]; 
    } 
} 

Antwort

0

Ihre Parser eine NSMutableString haben sollten, können Sie es zu leeren String in didStartElement, hängen Sie die Zeichenfolge in Foundcharacters und speichern Sie die Zeichenfolge in Ihre NSDictionary in didEndElement setzen sollten , etwas in der Art:

-(void)parser:(NSXMLParser *)parser didStartElement... 
{ 
    myMutableString = [[NSMutableString alloc] initWithFormat:@""]; 
} 

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
{ 
    [myMutableString appendString:string]; 
} 

-(void)parser:(NSXMLParser *)parser didEndElement... 
{ 
    for(NSString *toFind in keys){ 
     if([currentItem isEqualToString:toFind]) [item setObject:myMutableString forKey:toFind]; 
    } 
}