如何使用nsxmlparser解析xml文件具有相同的标记名称?

时间:2012-08-07 10:59:32

标签: iphone ios5 nsxmlparser

如何使用NSXMLParser解析此类型的XML

<category> <categoryName> userName</categoryName> <categoryName>password</categoryName><category>

2 个答案:

答案 0 :(得分:1)

在h文件中声明数组和字符串,如:

 NSMutableArray *aryCategory;
 NSString *strCategroyName;
<。>在.m文件中用于启动解析器使用:

NSXMLParser *parser = [[NSXMLParser alloc] initWithData:yourData]; // your data will be instance of NSData or NSMutableData
parser.delegate = self;
[parser parse];

这将在您获取xml数据后完成。要处理结果,您可以使用NSXMLParserDelegate,如下所示:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
     if ([elementName isEqualToString:@"category"]) {
          aryCategory = [[NSMutableArray alloc] init];
          strCategroyName = @"";
     }
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
     strCategroyName = [NSString stringWithFormat:@"%@%@", strCategroyName, string];
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
    if ([elementName isEqualToString:@"categoryName"]) {
          [aryCategory addObject:strCategroyName];
          strCategroyName = @"";
     }

}

现在,您将使用所有类别名称填充数组。

希望这会有所帮助:)

答案 1 :(得分:0)

<category>写在didStartdidEnd元素中,这些元素是解析器的代理。