Quote:
Originally Posted by pritamsaha
How to do parsing?
|
This class is used to store data:
#import <Foundation/Foundation.h>
@interface Transaction : NSObject
{
NSString *strDate;
NSString *strAmount;
NSString *strCard;
}
@property (nonatomic, retain) NSString *strDate;
@property (nonatomic, retain) NSString *strAmount;
@property (nonatomic, retain) NSString *strCard;
@end
#import "Transaction.h"
@implementation Transaction
@synthesize strDate;
@synthesize strAmount;
@synthesize strCard;
-(id)init
{
self=[super init];
return self;
}
@end
Following class will be used to parse the data:
#import <Foundation/Foundation.h>
#import "ATMLocationAppDelegate.h"
#import "Transaction.h"
@interface TransactionPerser : NSObject<NSXMLParserDelegate>
{
NSMutableString *contentOfString;
ATMLocationAppDelegate *appATM;
Transaction *objTransaction;
}
-(void)parseXMLFileAtData: (NSMutableData *)data parseError: (NSError **)error;
@end
#import "TransactionPerser.h"
#import "ATMLocationAppDelegate.h"
@implementation TransactionPerser
-(void)parseXMLFileAtData: (NSMutableData *)data parseError: (NSError **)error
{
appATM=(ATMLocationAppDelegate*)[[UIApplication sharedApplication]delegate];
NSXMLParser *parser;
parser = [[NSXMLParser alloc] initWithData:data];
[parser setDelegate:self];
[parser setShouldProcessNamespaces:NO];
[parser setShouldReportNamespacePrefixes:NO];
[parser setShouldResolveExternalEntities:NO];
[parser parse];
NSError *parseError = [parser parserError];
if (parseError && error)
{
*error = parseError;
}
[parser release];
}
-(void)parserDidStartDocument: (NSXMLParser *)parser
{
appATM.arrTransactionList = [[NSMutableArray alloc]init];
appATM.strError=@"";
}
- (void)parser: (NSXMLParser *)parser didStartElement: (NSString *)elementName namespaceURI: (NSString *)namespaceURI qualifiedName: (NSString *)qName attributes: (NSDictionary *)attributeDict
{
if (qName)
{
elementName = qName;
}
else
{
;
}
if([elementName isEqualToString: @"Transaction"])
{
objTransaction=[[Transaction alloc]init];
}
else if([elementName isEqualToString: @"TransactionDate"])
{
contentOfString=[NSMutableString string];
[contentOfString retain];
return;
}
else if([elementName isEqualToString: @"Ammount"])
{
contentOfString=[NSMutableString string];
[contentOfString retain];
return;
}
else if([elementName isEqualToString: @"CardNumber"])
{
contentOfString=[NSMutableString string];
[contentOfString retain];
return;
}
else if([elementName isEqualToString: @"Error"])
{
contentOfString=[NSMutableString string];
[contentOfString retain];
return;
}
else
{
;
}
}
- (void)parser: (NSXMLParser *)parser didEndElement: (NSString *)elementName namespaceURI: (NSString *)namespaceURI qualifiedName: (NSString *)qName
{
if (qName)
{
elementName = qName;
}
else
{
;
}
if([elementName isEqualToString: @"Transaction"])
{
[appATM.arrTransactionList addObject

bjTransaction];
[objTransaction release];
objTransaction=nil;
}
else if([elementName isEqualToString: @"TransactionDate"])
{
if(contentOfString)
{
objTransaction.strDate=contentOfString;
contentOfString=nil;
}
}
else if([elementName isEqualToString: @"Ammount"])
{
if(contentOfString)
{
objTransaction.strAmount=contentOfString;
contentOfString=nil;
}
}
else if([elementName isEqualToString: @"CardNumber"])
{
if(contentOfString)
{
objTransaction.strCard=contentOfString;
contentOfString=nil;
}
}
else if([elementName isEqualToString: @"Error"])
{
if(contentOfString)
{
appATM.strError=contentOfString;
[appATM.strError retain];
NSLog(@"appATM.strError=%@",appATM.strError);
contentOfString=nil;
}
}
else
{
;
}
}
- (void)parser: (NSXMLParser *)parser foundCharacters: (NSString *)string
{
if(contentOfString)
[contentOfString appendString:string];
}
- (void)parserDidEndDocument: (NSXMLParser *)parse{
NSLog(@"appATM.arrTransactionList=%@",appATM.arrTr ansactionList);
}
@end