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 {
        
        
    
    }
  • 相关阅读:
    docker基础:docker网络模式
    WEB架构师成长之路之一-走正确的路(转载)
    DDD(领域驱动设计)
    C#泛型和泛型约束(转载)
    MES系统介绍
    vue中 computed和watch的一些简单理解(区别)(转载)
    sqlserver常用表值函数
    SQLServerAgent 当前未运行,因此无法将此操作通知它。
    浅谈敏捷开发(转载)
    认证、授权、鉴权和权限控制(转载)
  • 原文地址:https://www.cnblogs.com/IOS-FU/p/4070435.html
Copyright © 2011-2022 走看看