XML数据解析的系统方法的代码分享

互联网 17-3-22
XML是一种自描述的数据交换格式。是一种非常重要的数据交换 格式,多年来一直用于各种计算机语言中。XML类似HTML,有一对对标签对,格式比HTML严谨,一个<>开始,一个结尾.

解析的内容为:

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

事先已将数据读取并存储在data中.创建一个类,继承自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;

再创建一个类,同样继承自NSObject,命名为userParser,实现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;  @end

userparser.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]]];  }

在viewcontroller中,创建userparser的实例对象,通过parserWithString方法实现数据解析

userParser *uparser=[[userParser alloc]init];  [uparser parserWithString:user];

注:将数据解析与界面显示分开写有助于减低程序的耦合,同时也符合MVC编程模式.

以上就是XML数据解析的系统方法的代码分享的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:自定义XML动态配置程序的示例代码分享

相关资讯