NSXMLParser解析XML

来源:互联网 发布:泉州千域网络 编辑:程序博客网 时间:2024/05/17 21:45

============================================================
博文原创,转载请声明出处
电子咖啡(原id蓝岩)
============================================================
通过ios自带的NSXMLParser来解析,效率比较慢,不推荐使用,这里只记录一下解析方法。

1。新建util类,实现NSXMLParserDelegate协议,(解析时候回调使用)

@interface MyXMLParseUtil :NSObject<NSXMLParserDelegate>-(void) parseXML;

2.使用NSXMLParser来读取制定xml,可以是rul,或是本地文件

-(void) parseXML{    /*
//这一句是读取web的xml,    NSString *address = @"http://data.3g.sina.com.cn/api/index.php?page=1&test=1&wm=b100&cid=43";    NSURL * url = [[NSURL alloc] initWithString:address];        NSData *data = [[NSData alloc] initWithContentsOfURL:url];     /*/     //读取本地xml    NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"xml"];    NSData *data = [[NSData alloc] initWithContentsOfFile:path];     //*/        NSLog(@"data: %@",data);    NSXMLParser *m_parser = [[NSXMLParser alloc] initWithData:data];    //设置该类本身为代理类,即该类在声明时要实现NSXMLParserDelegate委托协议    [m_parser setDelegate:self];  //设置代理为本地        BOOL flag = [m_parser parse]; //开始解析    if(flag) {        NSLog(@"获取指定路径的xml文件成功");    }else{        NSLog(@"获取指定路径的xml文件失败");    }}


3.重写NSXMLParserDelegate相应的方法来解析xml,这里简单说些比较重要的方法:

- (void)parserDidStartDocument:(NSXMLParser *)parser{ //开始解析调用    NSLog(@"...parserDidStartDocument...");}- (void)parserDidEndDocument:(NSXMLParser *)parser{ //结束解析调用     NSLog(@"...parserDidEndDocument...");}- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{ //遇到start tag调用     NSLog(@"...parser:didStartElement:namespaceURI:qualifiedName:attributes:...");}




原创粉丝点击