你的位置:首页 > 操作系统

[操作系统]IOS 阶段学习第23天笔记(XML数据格式介绍)

IOS学习(OC语言)知识点整理

一、 

1)概念:

 

2) 

   1、 json:市场上占90%,轻量级的表示数据  

   2、

 

3)

 1、DOM解析:将整个

     比较占内存,解析比较费时。 优点:可以修改

 2、SAX解析:基于事件驱动的解析,读取

      时可以进行处理。优点:解析速度快。缺点:不能修改

 

 3、使用第三方GData解析 

   1)、导入第三方(GData)文件  

   2)、GData类使用了底层的lib

         点击+,添加/Usr/include/lib 

   3)、添加二进制库文件:在Build Phases中点击Link Binary With Libraries,点+,选择 lib

 

4)使用GData 解析 

 1 #import "GData" 2 int main(int argc, const char * argv[]) { 3 @autoreleasepool { 4 //1、读取 5 NSData *data=[NSData dataWithContentsOfFile:@"/Users/Shared/ftp/book.txt"];
6 //将 7 GData[[GData 8 //获取根标记 9 GData[doc rootElement];
10 //在标记中根据子标记的名字获取子标记(返回数组,因为只有一个books子标记)11 GData@"books"] firstObject];
12 //获取books下的所有book标记(数组)13 NSArray *bookArray=[booksElement elementsForName:@"book"];
14 //遍历每个book标记15 for(GDatain bookArray){16 GData@"name"][0];
17 //stringValue获取标记的内容字符串18 NSLog(@"%@",[nameElement stringValue ]);
19 //获取book标记下的auther子标记20 GData@"auther"][0];
21 //获取auther标记下的子标记name(只有一个)22 GData@"name"][0];23 NSLog(@"auther name:%@",[autherNameElement stringValue]);
24 //获取book的id属性对象25 GData@"id"];26 //[idNode stringValue]取属性值27 NSLog(@"id:%@",[idNode stringValue]);28 }29 }30 return 0;31 }

 

5)xPath表达式:字符串表达式,快速查找某一个标记  

 1、/:表示从根标记开始解析  

 2、//:表示任意位置的标记,满足条件  

 3、./:表示当前标记  

 4、@:获取标记的属性

 

6)使用xPath解析  

 1 NSData *data=[NSData dataWithContentsOfFile:path]; 2 //1、GData 3 GData[[GData 4 //2、获取根标记 5 GData[doc rootElement]; 6  7 //返回任意标记下的所有的book标记 8 NSArray *bookArray=[root nodesForXPath:@"//book" error:nil]; 9 10 //遍历所有的book标记,每个book标记描述的一本书,需要取出封装成对象11 for(GDatain bookArray){12 BookItem *item=[[BookItem alloc]init];13 14 //@"./name":返回当前(book)标记下的name标记15 GData@"./name" error:nil][0];16 item.name=nameElement.stringValue;17 18 //取book标记下的price标记19 GData@"price"][0];20 item.price=[priceElement stringValue];21 22 //取当前(book)标记下的auther标记下的name标记23 GData@"./auther/name" error:nil][0];24 item.autherName=[autherNameElement stringValue];25 26 //获取book结点的id属性对象,取值27 GData@"id"];28 item.ID=[idNode stringValue];29 30 //取当前(book)标记的language属性对象31 GData@"./@language" error:nil][0];32 item.language=[languageNode stringValue];33 [_bookArray addObject:item];34 }35 36 NSArray *nameArray=[root nodesForXPath:@"//auther/name" error:nil];37 for(GDatain nameArray){38 NSLog(@"name:%@",[name stringValue]);39 }40 NSLog(@"**********");41 42 //获取任意标记下的book标记,并且book中的子标记的price字符串值>10043 GData@"//book[price>100]" error:nil][0];44 NSLog(@"%@",[book2 stringValue]);