Событие, происходящее дважды в NSXMLParser - PullRequest
0 голосов
/ 29 ноября 2011

Я использую NSXMLParser, я использовал следующий код хранить в объектах

   - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {

string = [string stringByTrimmingCharactersInSet:
          [NSCharacterSet whitespaceAndNewlineCharacterSet]];

NSLog(element);
NSLog(string);


if(([string length]>0 )||([string isEqualToString:@"c_id"])){

//  NSLog([NSString stringWithFormat:@"%@   %@",element,string]);

    if([element isEqualToString:@"c_id"]){
        if([string isEqualToString:@""]||string==NULL);
        else
            oneCharade.team_id=string;

    }
    else 
        if([element isEqualToString:@"title"]){
            if([string isEqualToString:@""]||string==NULL);
            else
                oneCharade.title=string;


        }

        else 
            if([element isEqualToString:@"desc"]){
                oneCharade.desc=string;
            //  NSLog(string);
                //NSLog(oneCharade.desc);

                [allCharades addObject:oneCharade];


                //[app.itemData addObject:data];
                //  NSLog(@"Object is added %@",searchedData.pid);

            }





}// end of the outer if 


   }




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

element=elementName;
if([element isEqualToString:@"c_id"]){
    oneCharade=[[XMLTeamData alloc]init];

    //NSLog(@"Object is created");
}


   }// end of the did start Element

           -(void)parserDidEndDocument:(NSXMLParser *)parser{
CharadesAppDelegate *del=(CharadesAppDelegate *)[[UIApplication   sharedApplication]delegate];
[del setServerCharades:allCharades];


//NSLog(@" count :%i",[allCharades count]);

}

, но для события desc происходит два раза, как вы можете видеть следующим образом

    2011-11-29 11:49:31.251 Charades[741:207] c_id
    2011-11-29 11:49:31.251 Charades[741:207] 191
    2011-11-29 11:49:31.251 Charades[741:207] title
    2011-11-29 11:49:31.251 Charades[741:207] Todd Philips
    2011-11-29 11:49:31.251 Charades[741:207] desc
    2011-11-29 11:49:31.251 Charades[741:207] Baksm
    2011-11-29 11:49:31.251 Charades[741:207] desc
    2011-11-29 11:49:31.251 Charades[741:207] ällan

Вы можете увидеть здесь

    <c_id>191</c_id><title>Todd Philips</title><desc>Baksmällan</desc><category>Filmer</category>

но событие для описания происходит устройство, как можно решить эту проблему

1 Ответ

1 голос
/ 29 ноября 2011

Кажется, проблема с данными вашего специального символа ä. Вы можете попробовать <desc><![CDATA[Baksmällan]]></desc>

Весь текст в документе XML будет проанализирован синтаксическим анализатором. Но текст внутри раздела CDATA будет игнорироваться парсером. Вы можете найти больше здесь .

Надеюсь, это поможет.

...