解析具有相同名称的元素? [英] Parse elements with the same name?

查看:117
本文介绍了解析具有相同名称的元素?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用NSXMLParser,但我有一些他们有相同名称的元素。所以我想知道如何以不同的方式解析它们?

I use NSXMLParser but i have some elements that they have the same name. So i want to know how can i parse them differently?

<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>


推荐答案

这是一个粗略的例子:

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



}

这篇关于解析具有相同名称的元素?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆