XML、JSON数据解析
发布时间:2020-12-16 09:09:13 所属栏目:百科 来源:网络整理
导读:解析: XML解析 XML:可扩展性标记语言 主流数据格式之一 功能:数据交换 、web服务 、内容管理 、 用作配置文件(重点) SAX 解析--逐行解析(采用协议回调机制) 实现协议 NSXMLParserDelegate - ( void )startParse { //xml 解析:逐行解析 // 从文件列
解析:
XML解析
XML:可扩展性标记语言 主流数据格式之一
功能:数据交换 、web服务 、内容管理 、 用作配置文件(重点)
SAX 解析-->逐行解析(采用协议回调机制)
实现协议
NSXMLParserDelegate
- (
void
)startParse
{ //xml 解析:逐行解析 // 从文件列表中读取数据 //1. 获得文件路径 NSString *sourcePath = [[ NSBundle mainBundle ] pathForResource : @"Student" ofType : @".xml" ]; //2. 通过路径把文件转换成 NSData 类型 NSData *data = [ NSData dataWithContentsOfFile :sourcePath]; 创建的时候需要给 parser 一个字符串数据 (NSData) NSXMLParser *parser = [[ NSXMLParser alloc ] initWithData :data]; 设定代理人 parser. delegate = self ; 开始对文件进行解析 [parser parse ]; } - ( void )parser:( NSXMLParser *)parser didStartElement:( NSString *)elementName namespaceURI:( NSString *)namespaceURI qualifiedName:( NSString *)qName attributes:( NSDictionary *)attributeDict { 当找到节点的时候,系统调用这个方法 NSLog ( @" 节点头 " ); if ([elementName isEqualToString : @"students" ]) { // 当找到 students 节点的时候,初始化数组 self . arr = [ NSMutableArray array ]; } else if ([elementName @"student" ]) { student 节点的时候,创建一个 对象 添加到数组里 Student *stu = [[ Student init ]; [ self . arr addObject :stu]; [stu release ]; } } - ( NSXMLParser *)parser foundCharacters:( NSString *)string { 当节点找到内容的时候,调用 节点内容 " ); 把内容保存起来 tempStr = string; } - ( NSXMLParser *)parser didEndElement:( NSString *)qName { 当找到节点结尾的时候调用 节点尾 " ); Student *stu = [ lastObject ]; @"number" ]) { stu. number = tempStr ; } @"name" ]){ stu. name = @"sex" ]){ stu. sex = @"phone" ]){ stu. phone = tempStr ; } }
DOM解析-->节点解析
- (
void
)startDOMParse
{ 按节点解析 获取解析的文件信息 NSString *xmlPath = [[ @".xml" ]; dataWithContentsOfFile :xmlPath]; 参数 1: 要解析的 xml 串 2: 随便 3: 错误信息 GDataXMLDocument *doc = [[ GDataXMLDocument alloc ] initWithData :data options : 0 error : nil ]; 获取文件的根节点 GDataXMLElement *rootElement = [doc rootElement ]; //3. 进一步搜索所有的子节点 返回一个装满了 节点( GDataXMLElement 对象)的数组 NSArray *stuArrray = [rootElement elementsForName : @"student" ]; //4. 遍历数组,把 节点的每个子节点取出来 for ( GDataXMLElement *element in stuArrray) { init ]; GDataXMLElement *nameElement = [[element @"name" ] lastObject ]; 从 name 节点中取值 NSString *value = [nameElement stringValue ]; 给学生对象的属性赋值 stu. name = value; GDataXMLElement *numberElement = [[element @"number" ] lastObject ]; value = [numberElement stringValue ]; stu. number = value; [ stuDomArray release ]; } }
JSON解析
系统提供的
json
解析方法
NSString *jsonPath = [[ @"txt" ]; dataWithContentsOfFile :jsonPath]; NSError *error = nil ; 文件数据 设置解析的结果 错误信息 NSArray *array = [ NSJSONSerialization JSONObjectWithData :data options : NSJSONReadingMutableContainers error :&error]; @"%@" ,array); for ( NSDictionary *dic in array) { init ]; stu. name = [dic objectForKey : @"name" ]; stu. sex = [dic @"sex" ]; stu. phone = [dic @"phone" ]; stu. number = [dic @"number" ]; [ stuArray release ]; }
第三方JSON解析包:JSONkit,SBJOSN
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |