Разобрать элементы с одинаковыми именами? - PullRequest
0 голосов
/ 19 декабря 2011

Я использую NSXMLParser, но у меня есть некоторые элементы, которые имеют одинаковое имя. Итак, я хочу знать, как я могу разобрать их по-разному?

<hours type="array">
    <hour>
        <name>Lun - Dim</name>
        <value>19:00 - 01:00</value>
    </hour>
</hours>
<categories type="array">
    <category>
        <name>Cuisine indienne</name>
        <value>indian</value> 
    </category>
</categories>

1 Ответ

2 голосов
/ 19 декабря 2011

Вот пример:

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



    if ([elementName isEqualToString:@"hours"]) {
           //Tells us we are in hours group
           _isInHoursGroup = YES; 
           //Get our hour object ready
           _myHourObject = [MyHourObject alloc] init];
           return;
      }

    if ([elementName isEqualToString:@"categories"]) {
           _isInCategoriesGroup = YES; 
           _myCategoryObject = [MyCategoryObject alloc] init];
           return;    

    }


}

тогда:

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {




    if ([elementName isEqualToString:@"hours"]) {
           _isInHoursGroup = NO; 
           return;
    }

    if ([elementName isEqualToString:@"categories"]) {
           _isInCategoriesGroup = NO; 
           return;   
    }

   if (_isInHoursGroup && [didEndElement isEqualToString:@"name"]) {

           //Assumes you have _currentValue variable with the current value in it.
           _myHourObject.myPropert = _currentValue;
           return;
   }

   if (_isInCategoriesGroup && [didEndElement isEqualToString:@"name"]) {

           //Assumes you have _currentValue variable with the current value in it.
           _myCategoryObject.myPropert = _currentValue;
           return;
   }



}
...