解析xml文件-NSXMLParser

简介

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

你可能感兴趣的:(解析xml文件-NSXMLParser)