Jump to content

XML Parsing Done Wrong?

xml parsing iOS iphone ipad web services

  • Please log in to reply
No replies to this topic

#1
LooN3y

LooN3y

    InsanelyMac Protégé

  • Members
  • Pip
  • 29 posts
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?



- (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.






0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

© 2014 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Mac Netbook  |   PHP hosting by CatN  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy