IOS网络笔记--xml解析之一(sax解析)
来源:互联网 发布:linux关机触发脚本 编辑:程序博客网 时间:2024/06/06 12:43
申明:此为本人学习笔记,若有纰漏错误之处的可留言共同探讨
/*
xml解析方式分为:
1.系统提供的方式sax (本篇只讲sax解析)
2.第三方控件解析方式dom
sax解析步骤
0 创建XMLParser类
1 遵寻协议 <NSXMLParserDelegate>
2 自定义解析方法 -(void)startparseWithData:(NSData*)data; 自定义方法初始化XML解析器,指定委托,解析
3 遵循5个协议方法:
开始解析文档,初始化一个字符串用于存储值
开始找元素,解析元素
找到字符,存进字符串中 [_string appendString:string];
结束找元素, 可以输出解析内容,看看是否出错
4 文档解析结束
5 创建类,调用方法解析xml
*/
附上demo和素材:http://yunpan.cn/cFKajrYJWkM22 (提取码:eea7) (ps 素材是demo中的example.xml)
XMLParser类
#import <Foundation/Foundation.h>
@interface XMLParser : NSObject<NSXMLParserDelegate>
{
NSMutableString *_string;
}
-(void)startparseWithData:(NSData*)data;
@end
#import "XMLParser.h"
@implementation XMLParser
-(void)startparseWithData:(NSData*)data
{
NSXMLParser *parser = [[NSXMLParser alloc]initWithData:data];
parser.delegate =self;
[parser parse];
}
// 五个协议方法
- (void)parserDidStartDocument:(NSXMLParser *)parser
{
_string = [[NSMutableString alloc]init];
}
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
[_string setString:@""];
if ([elementName isEqualToString:@"a1"])
{
// 如果是标签里面的 用attributeDict 如果是标签外面直接拼接字符串 [_string appendString:string];
NSString *key1 =[attributeDict objectForKey:@"key1"];
NSLog(@"key1:%@",key1);
}else if([elementName isEqualToString:@"name1"])
{
NSString *name1 = [attributeDict objectForKey:@"key1"];
NSLog(@"name1:%@ ",name1);
}
}
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
[_string appendString:string];
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if ([elementName isEqualToString:@"name1"]) {
NSLog(@"找到:%@",_string);
}
}
-(void)parserDidEndDocument:(NSXMLParser *)parser
{
}
@end
ViewController类
#import "ViewController.h"
#import "XMLParser.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 找路径 把文件取出来,存进data内
NSString *path = [[NSBundle mainBundle]pathForResource:@"example" ofType:@"xml"];
NSData* data = [[NSData alloc]initWithContentsOfFile:path];
// sax 创建解析器,解析xml
XMLParser *xmlParser = [[XMLParser alloc]init];
[xmlParser startparseWithData:data];
}
- IOS网络笔记--xml解析之一(sax解析)
- IOS网络笔记--xml解析之一(dom解析)
- iOS SAX 、DOM 、XML解析区别笔记
- Android网络编程之一:用SAX技术解析XML文件
- Android SAX解析XML网络(一)
- Android笔记之xml(SAX)解析
- IOS XML的SAX解析
- xml解析(SAX)
- IOS XML解析解析方法SAX
- IOS XML 解析SAX解析方式
- iOS:XML文件的解析(SAX解析)
- XML解析(一),SAX解析XML
- XML解析(SAX解析)
- XML解析:SAX解析
- xml&dom_sax_dom4j学习笔记(一)SAX解析XML文件
- XML解析之一——SAX解析详解
- Android网络编程之sax解析xml
- Android-DOM、SAX、PULL解析网络xml
- (多线程-静态同步函数的锁是Class对象)
- CString与const char*转换
- CountDownLatch控制线程执行顺序
- python学习--列表函数
- docker安装
- IOS网络笔记--xml解析之一(sax解析)
- 放一个简单的抽奖大转盘的源码
- Java本地调用JNI使用规范详解
- Apple移动设备处理器指令集 armv6、armv7、armv7s及arm64
- leetcode11 Container With Most Water
- vs2008快捷键极其技巧
- 配置groovy eclipse plugin for e4.4
- 安装Eclipse
- 移动开发资源