世界杯主题曲歌词 / 2025-05-25 16:31:05

简介

iOS SDK的NSXMLParser解析XML文档是事件驱动模式的,即采用SAX方式来解析XML格式文档。NSXMLParser在处理XML文档的过程中当遇到一些要素(元素、属性、CDATA块、评论等)时会通知它的委托,而自身不对解析的要素进行任何处理,全权委托给NSXMLParserDelegate处理。同时它也会报告错误。

使用步骤

1. 加载文件

NSString *pathFile = [[NSBundle mainBundle] bundlePath];

NSString *path = [[NSString alloc] initWithString:[pathFile stringByAppendingPathComponent:@"XMLTest.xml"]];

NSURL *xmlURL = [NSURL fileURLWithPath:path];

NSXMLParser *mparser = [[ NSXMLParser alloc] initWithContentsOfURL:xmlURL];

2. 设置代理

[mparser setDelegate:self];

3、开始解析

BOOL flag = [mparser parse];//会执行代理方法

if(flag) {

NSLog(@"ok");

}else{

NSLog(@"获取指定路径的xml文件失败");

}

//开始解析文件

- (void)parserDidStartDocument:(NSXMLParser *)parser

//遇到节点开始的标志执行,如遇到。通过该方法可以获得节点属性

-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict

//遇到节点值或换行时执行,如遇到结果中的“结果”;注意,换行也会执行该方法,可用[string characterAtIndex:0] != '\n'进行判断

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string

//遇到节点结束标志时执行,如遇到。换行不会执行该方法

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName

//文件解析结束时执行

- (void)parserDidEndDocument:(NSXMLParser *)parser

解析规则

遇到开始节点,如,执行:didStartElement,换行、特殊字符不执行该方法

遇到节点值,如结果,执行foundCharacters

遇到结束节点,如,执行didEndElement,换行、特殊字符不执行该方法

遇到换行,执行foundCharacters

例子:

//didStartElement(开始节点)--foundCharacters(换行)

//didStartElement--foundCharacters

张一 //didStartElement--foundCharacters--didEndElement--foundCharacters(换行)

//didStartElement--foundCharacters

张二 //didStartElement--foundCharacters--didEndElement--foundCharacters(换行)

20 //didStartElement--foundCharacters--didEndElement--foundCharacters(换行)

//didEndElement--foundCharacters(换行)

//didEndElement--foundCharacters

爸爸去哪儿
死亡摇滚