Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何使用nsxmlparser解析具有相同标记名的xml文件?_Iphone_Ios5_Nsxmlparser - Fatal编程技术网

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

Iphone 如何使用nsxmlparser解析具有相同标记名的xml文件?,iphone,ios5,nsxmlparser,Iphone,Ios5,Nsxmlparser,如何使用NSXMLParser解析这种类型的XML <category> <categoryName> userName</categoryName> <categoryName>password</categoryName><category> 用户名密码 在didStart和didEnd元素中写入,这些元素是解析器的委托。在h文件中声明数组和字符串,如: NSMutableArray *aryCategory; N

如何使用NSXMLParser解析这种类型的XML

<category> <categoryName> userName</categoryName> <categoryName>password</categoryName><category>
用户名密码

didStart
didEnd
元素中写入
,这些元素是解析器的委托。

在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 = @"";
     }
}

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


希望这有帮助:)

但是categoryname有两个值如何解析