XML Parsing Done Wrong?

Discussion in 'iOS Programming' started by loon3y, May 9, 2012.

  1. loon3y macrumors 65816

    loon3y

    Joined:
    Oct 21, 2011
    #1
    Im making a split view product search app for the iPad, that gets the data from a web service. but I'm having trouble getting the data to show up in my master tableview controller (the small table view on the left)


    is my parsing done correctly?


    Code:
    
    - (void)connectionDidFinishLoading:(NSURLConnection *)connection
    {
        NSString *responseString = [[NSString alloc] initWithData:self.responseData encoding:NSUTF8StringEncoding];
        
        NSString * newStr = [NSString stringWithUTF8String:[self.responseData bytes]];
        
        [self parseXML]; 
    }
    
    
    
    - (void) parseXML 
    {
        NSLog (@"parseXML");
       
        NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:self.responseData];
        
        [xmlParser setDelegate:self];
        
        
        myMasterList = [[MasterList alloc] init];
        
        if (![xmlParser parse])
        {
            NSLog (@"An error occurred in the parsing");    
        }
    }
    
    
    
    - (void)parserDidStartDocument:(NSXMLParser *)parser 
    {
        NSLog (@"parserDidStartDocument");
        inItemElement = NO;
    }
    
    
    - (void)parserDidEndDocument:(NSXMLParser *)parser 
    {
        NSLog (@"parserDidEndDocument");
    }
    
    
    // Called when the parser encounters a start element
    - (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict 
    {
        if ([elementName isEqualToString:@"str_smartsearch"]) 
        {
            inItemElement = YES;
        }
        capturedCharacters = [[NSMutableString alloc] initWithCapacity:50];
        capturedCharacters = [[NSMutableString alloc] initWithCapacity:250];
    }
    
    
    - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName 
      namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
    {
        
        
        if ([elementName isEqualToString:@"description"])
        {
            myMasterList.masterDecript = capturedCharacters;
            NSLog(@" decription:%@", capturedCharacters);
            }
        if ([elementName isEqualToString:@"onhand"]) 
        {
            myMasterList.masterOnHand = capturedCharacters;
            
        }
        if ([elementName isEqualToString:@"price"])
        {
            myMasterList.masterPrice = capturedCharacters;
        }
        if ([elementName isEqualToString:@"itemno"])
        {
            myMasterList.masterItem = capturedCharacters;
            [masterArray addObject:myMasterList];
            myMasterList = nil;
       
            
        }
        
        capturedCharacters = nil;   
        
        if ([elementName isEqualToString:@"str_smartsearch"]) 
        {
         
           inItemElement = NO;
        }
        
    
    }
    
    
    - (void)parser:(NSXMLParser *)parser foundCharacters:(NSMutableString *)string 
    {
        if (capturedCharacters != nil) 
        {
            [capturedCharacters appendString:string];
       
        }
        else 
        {
            [capturedCharacters isEqual:string];
        }
        
    }
    
    

    I've token out the NS logs and such, to make it easier to read. i've been stuck on this for while.


    all i need is for it to show up on my master tableview and iill basically be done with this app.
     
  2. Sykte macrumors regular

    Joined:
    Aug 26, 2010
    #2
    Code:
    if (capturedCharacters != nil) 
        {
            [capturedCharacters appendString:string];
       
        }
        else 
        {
            [B][capturedCharacters isEqual:string];[/B]
        }
    What's going on with the bold section? I believe you want to instantiate a new capturedCharacters.

    Hope this helps.
     

Share This Page