/*
解析的概念:按照约定好的格式提取数据的过程
该过程中涉及到的两类人:
提供数据方(后台):按照约定好的格式进行数据存储
数据提取方(使用数据的人):按照约定好的格式进行数据的提取
当今流行的数据存储格式:XML和JSON
XML:
<lanou22>(开始标签)
</lanou22>(结束标签)
两者统称为节点
*/
XML数据的特点
(1)XML是由成对的标签组成的,每一对标签都是由开始标签和结束标签组成,这对标签我们称为节点
(2)节点可以有父节点(该节点的外层节点),子节点(该节点的内层节点)。没有父节点的节点叫做根节点,没有子节点的节点叫做叶节点
(3)节点可以用来存储数据(注意:进行数据解析时我们需要找到叶节点,因为数据存储在叶节点)
//**************************************************
SAX解析:是一种基于事件回调的解析机制,将XML数据逐行读入内存并且进行解析。SAX解析适用于大数据解析。系统提供的解析方式就是基于SAX解析
(<这个方法名是视情况而定的,重要的是内容!而且实现第5步,需要遵从NSXMLParserDelegate代理>)
- (void)parserAction:(UIBarButtonItem *)item{
//1:获取XML数据的文件路径
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"XMLData" ofType:@"xml"];
//2:根据文件路径读取XML文件中的数据并转换成NSData
NSData *xmlData = [NSData dataWithContentsOfFile:filePath];
//3:创建数据解析器对象
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:xmlData];
//4:指定代理对象
parser.delegate = self;
//6:启动解析器开始解析
[parser parse];
}
//5:几个协议方法的实现
//当解析开始的时候调用
- (void)parserDidStartDocument:(NSXMLParser *)parser {
NSLog(@"解析开始");
}
//当应用程序解析到开始标签的时候调用
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
NSLog(@"开始标签:%@",elementName);
}
//当解析到开始标签后面的数据的时候调用
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
NSLog(@"读数据:%@",string);
}
//当应用程序解析到结束标签的时候调用
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
NSLog(@"结束标签:%@",elementName);
}
//当解析结束的时候调用
- (void)parserDidEndDocument:(NSXMLParser *)parser {
NSLog(@"解析结束");
}
//***********************************************************
网友评论