Jump to content

fluid | fixed

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
  • 24 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

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