2

I have searched for my prob and found the various solution on web like :

Using the British pound sign in an XML feed to be read by an iPhone

NOt able to parse "&"

Special Characters in NSString from HTML

This and here also

but it is not fruitful for me as after reading xml I am saving it in my DB.

Here is the xml :

<root>
    −<Discounts>
        <DiscountID>1</DiscountID>
        <Title>WeekEnd Offers</Title>
        <Description>Offer upto 50%</Description>
        <SalePrice>50</SalePrice>
        <RegularPrice>100</RegularPrice>
        <CreatedDate>11/14/2011</CreatedDate>
        <LastModifiedDate>11/14/2011</LastModifiedDate>
        <Status>1</Status>
        <PhotoPath>/photos/documents/coupzila/hiteshi-logo.png</PhotoPath>
    </Discounts>
</root>

m getting the description in string as :

  NSString * strDescription = [item.mdictXMLTagsData valueForKey:@"Description"];

    NSLog(@"String in description is : ",strDescription);

but the description field is getting null in console and i cant store it in my DB.

pls suggest how can I read and store special characters to my DB.

One more thing i came to know that &#37 is the keyword to read % sign but i dont know how n where to apply this.

pls help!!!

EDIT : my current code.

-(void)CallAPIForDetails
{

//RequestType = 2;
//UIApplication sharedApplication].networkActivityIndicatorVisible=YES;

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
ParsingAPI *api = [[ParsingAPI alloc]init];
api.delegate = self;


NSString *strurl = [@"" stringByAppendingFormat: @"http://192.168.1.108/Coupzila/api/default.aspx?method=GetData&RequestType=Discounts&StoreID=%d",StoreId];

NSLog(@"URL : %@",strurl);
strurl = [strurl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

api.strEntityName=@"Discounts";

api.arrayXMLTags = nil; 
api.arrayXMLAttributeTags = nil;

[api parseXMLFileAtURL:[NSURL URLWithString:strurl] showProgress:NO];   

[api release];  
[pool release];

}

- (void)feedDataArray:(ParsingAPI *)feed didFindItemsArray:(NSMutableArray *)items
{
/*
 if(RequestType == 2 )
 {*/
NSMutableArray *arraydeleteDetails = [CoreDataAPIMethods getObjectsFromContext:@"DiscountsDetail" :@"DiscountId" :YES :self.managedObjectContext];

for (float i=0;i<[arraydeleteDetails count];i++) 
{
    [self.managedObjectContext deleteObject:[arraydeleteDetails objectAtIndex:i]];
    NSError *error;
    if (![self.managedObjectContext save:&error]) {
        // Handle the error...
    }
}   

for (float i=0;i<[items count];i++) 
{               
    ParsingItem *item = [items objectAtIndex:i];

    NSMutableArray *arr = [CoreDataAPIMethods getObjectsFromContext:@"DiscountsDetail" :@"Index" :NO :self.managedObjectContext];

    if ([arr count] > 0) 
    {
        DiscountsDetail * DiscountsDetailObject = [arr objectAtIndex:0];

        NewEntryID = [DiscountsDetailObject.Index intValue] +1;

    }
    else 
    {
        NewEntryID = 1;
    }

    /*
     if (countImage == 0) 
     {
     countImage = NewEntryID;

     }*/


    //Now add the data in database 
    DiscountsDetail *data = (DiscountsDetail*)[NSEntityDescription insertNewObjectForEntityForName:@"DiscountsDetail" inManagedObjectContext:self.managedObjectContext];

    data.DiscountId = [NSNumber numberWithInt:[[item.mdictXMLTagsData valueForKey:@"DiscountID"] intValue ]];
    data.Title = [item.mdictXMLTagsData valueForKey:@"Title"];
    data.SalePrize = [item.mdictXMLTagsData valueForKey:@"SalePrice"];
    data.RegularPrize = [item.mdictXMLTagsData valueForKey:@"RegularPrice"];
    //data.Description = @"This is test descriptionsakdj bfaisdfj bgasdlkab gfdil ufghiub nrungdfg bndfiosggn iouer5nn gdfnsngdfsu gndklfngdufn gkdfjlbgn lidsfub gdilufbf gldfb ghdfsiosa ifgho aibfg iodfb dfug hbdfg iygofadqi igdfhaibg adofibg ifdbgioadfbg adfigyb asg ig agiobfg finish" ;  


  NSString * strDescription = [item.mdictXMLTagsData valueForKey:@"Description"];

    NSXMLParser * parser = [item.mdictXMLTagsData valueForKey:@"Description"];

    [self parser:parser foundCharacters:strDescription];
    NSLog(@"String in description is : ",strDescription);

    data.Description =[item.mdictXMLTagsData valueForKey:@"Description"];
    data.Index = [NSNumber numberWithInt:NewEntryID];


    NSLog(@"Description is :",data.Description);


    if ([item.mdictXMLTagsData valueForKey:@"PhotoPath"] != nil)
    {

        NSString *photopath=@"http://192.168.1.108/Coupzila/";

        NSData *dataimage=[NSData dataWithContentsOfURL:[NSURL URLWithString:[photopath stringByAppendingString:[item.mdictXMLTagsData valueForKey:@"PhotoPath"]]]];

        data.ImageDiscounts = dataimage;

    }


    NSError *error;             

    if (![self.managedObjectContext save:&error])
    {
        // Handle the error...
    }

    self.arrayDiscountDetails = [CoreDataAPIMethods getObjectsFromContext:@"DiscountsDetail" :@"DiscountId" :NO :self.managedObjectContext];

}

}

Community
  • 1
  • 1
NSException
  • 1,268
  • 3
  • 14
  • 28

1 Answers1

0

Edited :- Hope u r Initializing the currentParsedCharacter...

This is not the exact code for u... but it should be similar... try it out or else provide code for what u r trying do that we can help in a better way.

-(id)init{
    if(self == [super init]){
        ObjectsMutableArray = [[NSMutableArray alloc] init];
        currentParsedCharacterData = [[NSMutableString alloc]init];
    }
    return self; 
}


- (void)parserDidStartDocument:(NSXMLParser *)parser
{

}


- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    currentElement = elementName;

    if([currentElement isEqualToString:@"Table"]) {
        obj = [[SomeClass alloc]init];
    }

    if ( [currentElement isEqualToString:@"Description"])
    {

        self.currentParsedCharacterData =(NSMutableString *) @"";
    }

}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    if([currentElement isEqualToString:@"OtherThanDescription"]) {
        obj.CatName=[NSString stringWithFormat:@"%@",string];
        NSLog(@"CatName to be saved in Array :- %@",string);
    }

    else if([currentElement isEqualToString:@"Description"]) {

        NSMutableString *outputBuilder =  [[NSMutableString alloc]init] ;

        [outputBuilder appendString:[NSString stringWithFormat:@"%@", self.currentParsedCharacterData]];

        [outputBuilder appendString:[NSString stringWithFormat:@"%@", string]];

        self.currentParsedCharacterData = outputBuilder;

        [outputBuilder release];
    }

    else 
    {
        self.currentParsedCharacterData = (NSMutableString *)string;
    }
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
    if([elementName isEqualToString:@"Table"]) {
        NSLog(@"Current element in End Element Category:- %@",currentElement);
        [ObjectsMutableArray addObject:obj];

    }
    if([elementName isEqualToString:@"Description"]) {
        obj.CatDesc = self.currentParsedCharacterData;
        NSLog(@"Current element in End Element Category:- %@",obj.CatDesc);

    }
    currentElement = @"";
}



- (void)parserDidEndDocument:(NSXMLParser *)parser
{
    appDelegate = (AppDelegate_iPhone *)[[UIApplication sharedApplication] delegate];
    appDelegate.ObjectsArray = [[NSMutableArray alloc]initWithArray:ObjectsMutableArray];

}

// dealloc it the variables then...

mAc
  • 2,434
  • 2
  • 22
  • 39
  • Sad.. have u refered this link http://stackoverflow.com/questions/3904615/sign-in-string-objective-c – mAc Dec 07 '11 at 06:44
  • one stupid question i wanna ask, wat is current element in the above code ? As i replace it with my DB Class object.Description, Is it correct or not ??? – NSException Dec 07 '11 at 06:49
  • Hehhe... currentElement is used in didStartElement Method to know which node we are parsing... it saves the node for which i am parsing the foundCharacters method – mAc Dec 07 '11 at 06:52
  • go to the answer once again i have modified it... given u a piece of my code.. try it out this... If it helps Vote me up or Check Mark the Answer.. :) – mAc Dec 07 '11 at 07:06
  • let us [continue this discussion in chat](http://chat.stackoverflow.com/rooms/5647/discussion-between-iphony-iphony-and-mac) – NSException Dec 07 '11 at 07:35