繁体   English   中英

在iPhone中从XML读取“%”符号

[英]Read “%” sign from xml in iphone

我已经搜索了我的问题,并在网上找到了各种解决方案,例如:

在XML供稿中使用英镑符号以供iPhone读取

无法解析“&”

HTML中NSString中的特殊字符

也是这里

但对我来说却没有收获,因为阅读xml之后,我将其保存在数据库中。

这是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以字符串形式获取描述:

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

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

但说明字段在控制台中为空,我无法将其存储在数据库中。

请提出如何读取特殊字符并将其存储到数据库的建议。

我了解到的另一件事是&#37是读取%符号的关键字,但我不知道该在哪里应用。

请帮助!!!

编辑:我当前的代码。

-(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];

}

}

编辑:-希望您初始化currentParsedCharacter ...

这不是您的确切代码...但是应该类似...尝试一下,或者提供您可以做的更好的代码。

-(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];

}

//然后为它取消分配变量

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM