加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

解析XML

发布时间:2020-12-16 05:45:17 所属栏目:百科 来源:网络整理
导读:// // ParserDataViewController.m // AppUI 组件学习 // Created by 麦子 on 15/6/27. // Copyright (c) 2015 年 麦子 . All rights reserved. // #import "ParserDataViewController.h" #import "StudentByXml.h" @interface ParserDataViewController (){

//

// ParserDataViewController.m

// AppUI组件学习

// Created by 麦子 on 15/6/27.

// Copyright (c) 2015 麦子. All rights reserved.

//


#import "ParserDataViewController.h"

#import "StudentByXml.h"


@interface ParserDataViewController (){


NSMutableArray *array;

StudentByXml *xmlEntity;

NSString *proName;

bool flag;


}


@end


@implementation ParserDataViewController


- (void)viewDidLoad {

[super viewDidLoad];

self.view.backgroundColor = [UIColor whiteColor];

self.title = @"xmlJson数据解析";

[self create];

}


- (void)create{

UIButton *json = [UIButton buttonWithType:UIButtonTypeRoundedRect];

[json setTitle:@"json解析" forState:UIControlStateNormal];

json.tag = 1;

json.frame = CGRectMake(50,100,300, 100);

[json addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:json];

UIButton *xml = [UIButton buttonWithType:UIButtonTypeRoundedRect];

[xml setTitle:@"xml解析" forState:UIControlStateNormal];

xml.frame = CGRectMake(50, 100);

xml.tag = 2;

[xml addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:xml];


}


// 初步熟悉网络请求

- (void)netWorkByStudent:(NSString *)urlRequest{

// 组装URL请求对象

NSURL *url = [NSURL URLWithString:urlRequest];

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];

// 请求设置

[request setHTTPMethod:@"post"];

// 设置参数

NSString *str = @"city=AA&password=12345";

NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];

[request setHTTPBody:data];

// 返回结果 -- 同步和异步

NSData *result = [NSURLConnection sendSynchronousRequest:request

returningResponse:nil error:nil];

// 对数据处理,如字符串

NSString *resultStr = [[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding];

}



- (void)btnClick:(UIButton *)btn{

switch (btn.tag) {

case 1:{

break;

}

case 2:{

// 获取完整路径

NSString *path = [[NSBundle mainBundle]pathForResource:@"xml_demo" ofType:@"xml"];

// 读到内存中

NSData *data = [NSData dataWithContentsOfFile:path];

// 构建xml对象

NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];

// 设定代理对象

parser.delegate = self;

// 开始转换

[parser parse];

// 解析内存数据

// NSString *content = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

// NSLog(@"%@",content);

break;

}

default:

break;

}


}




// 文档开始

- (void)parserDidStartDocument:(NSXMLParser *)parser{

array = [[NSMutableArray alloc] initWithCapacity:100];

}



// 元素开始

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{

if (flag) {

proName = elementName;

}

if ([elementName isEqualToString:@"student"]) {

xmlEntity = [[StudentByXml alloc] init];

flag = true;

// 获取属性----强大的KVC,对于不确定但是有规律的key来说,简单方便。

NSArray *keyArray = [attributeDict allKeys];

for (NSString *key in keyArray) {

[xmlEntity setValue:[attributeDict objectForKey:key] forKey:key];

}

}

}


// 利用KVC形式设置数据

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{

string = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

// if (![string isEqualToString:@"n"]) {

if (flag && proName.length > 0 && string.length > 0) {

[xmlEntity setValue:string forKey:proName];

proName = @"";

}

// }

}



// 元素结束

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{

if (flag && [elementName isEqualToString:@"student"]) {

flag = false;

[array addObject:xmlEntity];

NSLog(@"%@--%@---%ld--%@---%@",xmlEntity.name,xmlEntity.sex,xmlEntity.age,xmlEntity.school,xmlEntity.area);


}

}



// 文档结束

- (void)parserDidEndDocument:(NSXMLParser *)parser{


NSLog(@"%@",array);

}




- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

}




@end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读