If XML inside bundle :
NSString *pathStr = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Mobile_amountDue.xml"];
NSData *dataXml = [NSData dataWithContentsOfFile:pathStr];
url = [[NSURL alloc] initWithString:pathStr];
xmlParser = [[NSXMLParser alloc] initWithData:dataXml];
parser = [[XMLParser alloc] initXMLParser:@"success"];
[xmlParser setDelegate:parser];
[xmlParser parse];
if([newsArray count]>0)
{
[newsArray removeAllObjects];
}
newsArray=[parser.parsedXML mutableCopy];
XML read from URL :
#define URL_STRING @"http://www.espncricinfo.com/rss/content/story/feeds/0.xml"// RSS url
#define OUTER_TAG @"item" //Parent Tag
url = [[NSURL alloc] initWithString:URL_STRING];
xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
parser = [[XMLParser alloc] initXMLParser:OUTER_TAG];
[xmlParser setDelegate:parser];
[xmlParser parse];
if([newsArray count]>0)
{
[newsArray removeAllObjects];
}
newsArray=[parser.parsedXML mutableCopy];
////////////////////////////////////////////XMLParser.h/////////////////////////////////////
#import
@interface XMLParser : NSObject <NSXMLParserDelegate>{
NSMutableString *currentElementValue;
NSString *repetingTag;
NSMutableArray *parsedXML;
NSMutableDictionary *curObj;
}
@property (nonatomic, retain) NSMutableArray *parsedXML;
- (XMLParser *) initXMLParser :(NSString *)repetingTagStr ;
@end
////////////////////////////////////////////XMLParser.m/////////////////////////////////////
#import "XMLParser.h"
@implementation XMLParser
@synthesize parsedXML;
- (XMLParser *) initXMLParser :(NSString *)repetingTagStr{
[super init];
parsedXML = [[NSMutableArray alloc] init];
repetingTag=repetingTagStr;
return self;
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict {
currentElementValue = nil;
if([elementName isEqualToString:repetingTag]) {
curObj=[[NSMutableDictionary alloc]init];
}
for (NSString *key in attributeDict) {
NSString *vKeyValue = [attributeDict valueForKey:key];
[curObj setValue:[vKeyValue stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] forKey:key];
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
if(!currentElementValue)
currentElementValue = [[NSMutableString alloc] initWithString:string];
else
[currentElementValue appendString:string];
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
//There is nothing to do if we encounter the tourneys element here.
//If we encounter the tourneys element howevere, we want to add the book object to the array
// and release the object.
if([elementName isEqualToString:repetingTag]) {
[parsedXML addObject:curObj];
//NSLog(@"cdsvdvhdshvdov;===%@",parsedXML);
[curObj release];
curObj = nil;
}
else
{
[curObj setValue:[currentElementValue stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] forKey:elementName];
}
[currentElementValue release];
currentElementValue = nil;
}
- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError
{
NSString *errorMessage;
if([parseError code]==5)
{
errorMessage=@"Internet connection not found. Please ensure connectivity for the app to work correctly.";
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"No Network"
message:@"A network connection is required. Please verify your network settings and try again."
delegate:nil cancelButtonTitle:nil
otherButtonTitles:@"OK", nil];
[alert show];
[alert release];
}
}
- (void)parserDidEndDocument:(NSXMLParser *)parser{
}
- (void) dealloc {
[curObj release];
[currentElementValue release];
[super dealloc];
}
@end
Comments
Post a Comment