首页 > 代码库 > XML网络数据解析

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 {        }

 

XML网络数据解析