zoukankan      html  css  js  c++  java
  • XML网络数据解析

    1.首先加载xml网址

    -(void)loadXml
    {
        NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://m.kiway.cn:50/version/ddpt.xml"]];
        NSURLRequest *request1 = [NSURLRequest requestWithURL:url];
        
        NSURLResponse *response = nil;
        NSError *errpr = nil;
        //同步加载数据
        NSData *data1 = [NSURLConnection sendSynchronousRequest:request1 returningResponse:&response error:&errpr];
        NSXMLParser *xmlparser = [[NSXMLParser alloc] initWithData:data1];
        [xmlparser setDelegate:self];//设置代理方法
        BOOL flag = [xmlparser parse];//开始解析数据,做一个判断,成功在开始解析
        
        if (flag) {
            NSLog(@"OK");
        }else
        {
            NSLog(@"获取xml文件失败");
        }
        
    }

    2.xml数据解析的协议方法

    - (void)parserDidStartDocument:(NSXMLParser *)parser {
        parserObjects = [[NSMutableArray alloc] init];  //每一组信息都用数组来存,最后得到的数据即在此数组中
    }
    
    - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict {
        
        NSArray *elementArray = [[NSArray alloc] initWithObjects:@"serverCode",@"apkUrl",nil];
        
        if ([elementName isEqualToString:@"version"]) {  //开始解析News节点
            
            dataDict = [[NSMutableDictionary alloc] initWithCapacity:0];  //每一条信息都用字典来存储
            NSLog(@"%@",dataDict);
        }else {   //开始解析子节点
            for (NSString *e in elementArray) {
                if ([e isEqualToString:elementName]) {
                    self.m_strCurrentElement = elementName;
                    self.tempString = [NSMutableString string];
                    break;
                }
            }
        }
        
        
    }
    
    - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
        //填充string
        if (m_strCurrentElement) {
            [self.tempString appendString:string];
            [dataDict setObject:string forKey:m_strCurrentElement];
            
        }
    }
    
    - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
        
        //填充dic
        if (m_strCurrentElement) {
            [dataDict setObject:self.tempString forKey:m_strCurrentElement];
            
            self.m_strCurrentElement = nil;
            self.tempString = nil;
        }
        
        //结束解析News节点
        if ([elementName isEqualToString:@"version"]) {
            if (dataDict) {
                [parserObjects addObject:dataDict];
            }
        }
        
    }
    
    - (void)parserDidEndDocument:(NSXMLParser *)parser {
        
        
    
    }
  • 相关阅读:
    如何设置nginx日志格式来查看负载分担结果
    Nginx缓存使用官方教程及常见问题解答
    nginx缓存和flask_cache
    flask_wtf/wtforms几个坑点,先简单记此
    maven-dependency-plugin插件的使用
    maven+jenkins+jmeter性能测试:maven把项目依赖拷贝到项目指定位置
    sudo:抱歉,您必须拥有一个终端来执行 sudo 解决办法;ssh执行sudo命令的方法;给用户增加sudo免密权限
    innerHTML引起IE的内存泄漏
    innerHTML与IE浏览器内存泄露问题
    IE内存泄露与无法回收研究小结
  • 原文地址:https://www.cnblogs.com/IOS-FU/p/4070435.html
Copyright © 2011-2022 走看看