XML 文件解析 SAX解析 DOM 解析
来源:互联网 发布:图书馆借阅源码 php 编辑:程序博客网 时间:2024/06/18 17:49
//************ dom 解析 ******************************#pragma mark -- dom 解析 使用之前先配置// DOM 是谷歌08年封装的一个解析xml的工具- (IBAction)DOM:(UIButton *)sender { NSString *filePath = [[NSBundle mainBundle]pathForResource:@"Students" ofType:@"txt"]; NSData *data = [NSData dataWithContentsOfFile:filePath];// 参数2:解析选项,设置为 0 即可// 参数3:错误信息 GDataXMLDocument *document = [[GDataXMLDocument alloc]initWithData:data options:0 error:nil];// 获取 根节点 GDataXMLElement *rootElement = document.rootElement;// 遍历根节点上的子节点 , 遍历3次是 3个学生 for (GDataXMLElement *element in rootElement.children) { Student *stu = [[Student alloc]init];// 遍历子节点上的子节点 for (GDataXMLElement *subElemrnt in element.children) {// 使用KVC给属性赋值// subElemrnt.stringValue // 是标签的值// element.name // 是标签的key [stu setValue:subElemrnt.stringValue forKey:element.name]; } [self.studentArray addObject:stu]; } NSLog(@" %@", self.studentArray);}//****************** sax 解析 ****************************************#pragma mark -- sax 解析- (IBAction)saxButton:(UIButton *)sender { /** * 解析 xml格式数据有两种 1. sax 解析 特点: 对xml数据进行逐行解析,也就是一行一行解析,整个xml数据只读一遍 优点: 读取数据不会占用内存,适合读取大型数据 缺点: 只能逐行读取数据,不能指定读取指定位置的数据 2. DOM 解析 特点 :将 xml 数据以树型结构的形式全部取到内存上,可以指定读取某个位置的数据 优点 :比较灵活,可以读取任意位置的数据,适合读取小数据 缺点 :占用内存小,不能读取大型数据. */ NSString *filePath = [[NSBundle mainBundle]pathForResource:@"Students" ofType:@"txt"];// 声明 NSData 对象 NSData *data = [NSData dataWithContentsOfFile:filePath];// 创建sax解析类的对象 NSXMLParser *parser = [[NSXMLParser alloc]initWithData:data];// 指定代理人,使用协议方法来解析数据 parser.delegate = self;// 开始解析 [parser parse];}// 开始解析时触发的方法-(void)parserDidStartDocument:(NSXMLParser *)parser {// 这个方法知执行一次,所以可以在这里初始化数组 self.studentArray = [NSMutableArray array]; NSLog(@"开始解析");}// 解析开始标签触发的方法-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict { NSLog(@"开始标签为 = %@", elementName);// 如果开始标签是 stu 说明将要读取一个学生信息 if ([elementName isEqualToString:@"stu"]) { Student *stu = [[Student alloc]init]; [self.studentArray addObject:stu]; [stu release]; }// 记录开始标签 self.startElement = elementName;}// 获取标签值时触发的方法- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { NSLog(@"标签值为 = %@", string); Student *stu = [self.studentArray lastObject];// 方法 1: KVC 方法 [stu setValuesForKeysWithDictionary:self.startElement];// 方法 2:// if ([self.startElement isEqualToString:@"number"]) {// stu.number = string;// }// if ([self.startElement isEqualToString:@"name"]) {// stu.name = string;// }// if ([self.startElement isEqualToString:@"address"]) {// stu.address = string;// }// if ([self.startElement isEqualToString:@"time"]) {// stu.time = string;// }}// 读取结束标签时 触发的方法- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { NSLog(@"结束标签为 = %@", elementName);// 将开始标签置空,防止将值覆盖 self.startElement = nil;}// 结束解析时调用- (void)parserDidEndDocument:(NSXMLParser *)parser { NSLog(@"结束解析"); for (Student *stu in self.studentArray) { NSLog(@"\n number = %@ name = %@ address = %@ time = %@ \n", stu.number, stu.name, stu.address, stu.time); }}
0 0
- XML 文件解析 SAX解析 DOM 解析
- SAX,DOM解析xml文件
- dom,sax解析xml
- XML-DOM SAX解析
- xml解析,dom/sax
- XML 解析---dom解析和sax解析
- Android SAX和DOM解析XML文件
- DOM和SAX解析XML文件
- Android xml文件解析 SAX,DOM,PULL
- 使用SAX或者DOM解析XML文件
- Dom、Sax、Pull解析xml文件
- XML文件解析汇总SAX/DOM/PULL
- Android中Sax解析与Dom解析xml文件
- sax、dom、pull解析xml
- SAX、DOM、PULL解析XML
- java dom、sax解析XML
- Dom Sax Pull解析xml
- DOM、SAX解析xml文档
- 【E】【59】【leetcode题解】Valid Sudoku
- 设备驱动的艺术之旅 - 无处不在的字符设备<二>
- 今天开发上遇到的问题记录
- Ceph块设备命令
- IOS吐槽狂人:课外扩展,吊到没朋友
- XML 文件解析 SAX解析 DOM 解析
- python练习1
- project euler 73
- C++自带sort函数的用法
- 网易前端微专业,JavaScript程序设计基础篇:数组
- IOS吐槽狂人:self 是什么 ,super 是什么
- 交易系统类经典书籍总汇
- FZU--2188--过河(bfs暴力条件判断)
- [JZOJ3975] 串