Jump to content

XML Parsing Done Wrong?


1 post in this topic

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

Link to comment
Share on other sites

 Share

×
×
  • Create New...