Maison > Article > développement back-end > Partage de code de méthodes systématiques pour l'analyse de données XML
XML est un format d'échange de données auto-descriptif. Il s'agit d'un format d'échange de données très important qui est utilisé dans divers langages informatiques depuis de nombreuses années. XML est similaire au HTML, avec des paires de balises, et le format est plus strict que le HTML, commençant par a8093152e673feb7aba1828c43532094 et se terminant par 5f557f62ae7ac7a14e0b1cb564790dfc. Le contenu analysé de
est :
<users> <user id="001"> <name>张三</name> <password>123456</password> <nickname>小张</nickname> <description>1111111111</description> </user> <user id="002"> <name>张三</name> <password>2222222</password> <nickname>小四儿</nickname> <description>李四是个好学生</description> </user> <user id="003"> <name>张三</name> <password>88888888</password> <nickname>小五</nickname> <description>1234567890</description> </user> </users>Les données ont été lues et stockées dans data à l'avance
Créez une classe,
héritez de NSObject, nommez-la userInfo
@property(nonatomic,copy)NSString *uID; @property(nonatomic,copy)NSString *name; @property(nonatomic,copy)NSString *password; @property(nonatomic,copy)NSString *nickname; @property(nonatomic,copy)NSString *description;Créez-en une autre. classe, hérite également de NSObject , nommée userParser, pour implémenter la lecture des fichiers XML userParser.h
#import <Foundation/Foundation.h> #import "user.h" @interface userParser : NSObject<NSXMLParserDelegate> //存储信息的数组 @property(nonatomic,retain)NSMutableArray *array; //实例 @property(nonatomic,retain)user *people; //创建字符串保存信息 @property(nonatomic,copy)NSMutableString *buffer; //读取xml文件 -(void)parserWithString:(NSString *)string; @enduserparser.m
#import "userParser.h" @implementation userParser -(void)parserWithString:(NSString *)string { //使用系统XML解析方法 NSXMLParser *parser=[[NSXMLParser alloc]initWithData:[string dataUsingEncoding:NSUTF8StringEncoding]]; //设置代理 parser.delegate=self; //开始解析 [parser parse]; } #pragma mark ---NSXMLParserDelegate--- //开始解析 - (void)parserDidStartDocument:(NSXMLParser *)parser { NSLog(@"it begin"); } //解析结束 - (void)parserDidEndDocument:(NSXMLParser *)parser { NSLog(@"it is over"); for (int i=0; i<_array.count; i++) { user *user=_array[i]; NSLog(@"%@,%@,%@,%@,%@",user.uID,user.name,user.password,user.nickname,user.description); } } //遇到开始标签 //attributeDict标签属性 - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict { if ([elementName isEqualToString:@"users"]) { _array=[[NSMutableArray alloc]init]; } else if ([elementName isEqualToString:@"user"]) { _people=[[user alloc]init]; //<user id="3"> _people.uID=[attributeDict objectForKey:@"id"]; } else if ([elementName isEqualToString:@"name"]) { _buffer=[[NSMutableString alloc]init]; } else if ([elementName isEqualToString:@"password"]) { _buffer=[[NSMutableString alloc]init]; } else if ([elementName isEqualToString:@"nickname"]) { _buffer=[[NSMutableString alloc]init]; } else if ([elementName isEqualToString:@"description"]) { _buffer=[[NSMutableString alloc]init]; } } //结束标签 - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { if ([elementName isEqualToString:@"name"]) { _people.name=_buffer; } else if ([elementName isEqualToString:@"password"]) { _people.password=_buffer; } else if ([elementName isEqualToString:@"nickname"]) { _people.nickname=_buffer; }else if ([elementName isEqualToString:@"description"]) { _people.description=_buffer; } else if ([elementName isEqualToString:@"user"]) { [_array addObject:_people]; } } //读取内容 - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { //NSCharacterSet字符串结合,取出字符串中的空格 [_buffer appendString:[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]]; }Dans le viewcontroller. , créez une instance de userparser
Object implémente l'analyse des données via la méthode parserWithString
userParser *uparser=[[userParser alloc]init]; [uparser parserWithString:user];Remarque : l'écriture séparée de l'analyse des données et de l'affichage de l'interface permet de réduire le couplage du programme et est également cohérente avec le mode
MVCProgrammation.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!