這篇文章主要介紹XML數(shù)據(jù)解析的系統(tǒng)方法有哪些,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
我們提供的服務(wù)有:成都網(wǎng)站設(shè)計、做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、新北ssl等。為數(shù)千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的新北網(wǎng)站制作公司
XML是一種自描述的數(shù)據(jù)交換格式。是一種非常重要的數(shù)據(jù)交換 格式,多年來一直用于各種計算機語言中。XML類似HTML,有一對對標簽對,格式比HTML嚴謹,一個<>開始,一個>結(jié)尾.
解析的內(nèi)容為:
張三 123456 小張 1111111111 張三 2222222 小四兒 李四是個好學(xué)生 張三 88888888 小五 1234567890
事先已將數(shù)據(jù)讀取并存儲在data中.
創(chuàng)建一個類,繼承自NSObject,命名為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;
再創(chuàng)建一個類,同樣繼承自NSObject,命名為userParser,實現(xiàn)xml文件的讀取.
userParser.h
#import#import "user.h" @interface userParser : NSObject //存儲信息的數(shù)組 @property(nonatomic,retain)NSMutableArray *array; //實例 @property(nonatomic,retain)user *people; //創(chuàng)建字符串保存信息 @property(nonatomic,copy)NSMutableString *buffer; //讀取xml文件 -(void)parserWithString:(NSString *)string; @end
userparser.m
#import "userParser.h" @implementation userParser -(void)parserWithString:(NSString *)string { //使用系統(tǒng)XML解析方法 NSXMLParser *parser=[[NSXMLParser alloc]initWithData:[string dataUsingEncoding:NSUTF8StringEncoding]]; //設(shè)置代理 parser.delegate=self; //開始解析 [parser parse]; } #pragma mark ---NSXMLParserDelegate--- //開始解析 - (void)parserDidStartDocument:(NSXMLParser *)parser { NSLog(@"it begin"); } //解析結(jié)束 - (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]; //_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]; } } //結(jié)束標簽 - (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]; } } //讀取內(nèi)容 - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { //NSCharacterSet字符串結(jié)合,取出字符串中的空格 [_buffer appendString:[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]]; }
在viewcontroller中,創(chuàng)建userparser的實例對象,通過parserWithString方法實現(xiàn)數(shù)據(jù)解析
userParser *uparser=[[userParser alloc]init]; [uparser parserWithString:user];
注:將數(shù)據(jù)解析與界面顯示分開寫有助于減低程序的耦合,同時也符合MVC編程模式.
以上是“XML數(shù)據(jù)解析的系統(tǒng)方法有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!