您的位置:首页 > 其它

NSXMLParser解析XML数据

2015-11-19 08:54 363 查看
Cpp代码


NSXMLParser解析XML数据 用法如下:

一、首先,必须继承NSXMLParserDelegate协议

@interface ViewController : UIViewController<NSXMLParserDelegate>

二、设置XML数据,并初始化NSXMLParser:

1、从本地XML文件中读取数据

NSString *strPathXml = [[NSBundle mainBundle] pathForResource:@"group" ofType:@"xml"];

NSData *xmlData = [[NSData alloc] initWithContentsOfFile:strPathXml];

NSXMLParser *parserXML = [[NSXMLParser alloc] initWithData:xmlData];

[parser setShouldProcessNamespaces:NO];

[parser setShouldReportNamespacePrefixes:NO];

[parser setShouldResolveExternalEntities:NO];

[parser setDelegate:self];

[parser parse];

[parser release];

2、从接口Java Servlet中获取数据

NSString *nstrYwKPIUrl = [[NSString alloc]initWithFormat:@"%@?citys=%@&startTime=%@&endTime=%@&indexNames=%@",YWKPIURL,city,startTime,endTime,zbz];

//Servlet访问地址与传递参数

NSString *encodedURL = [nstrYwKPIUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

//对Servlet访问地址进行编码

NSLog(@"encodedURL is %@",encodedURL);

NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:[NSURL URLWithString:encodedURL ]];

[parser setShouldProcessNamespaces:NO];

[parser setShouldReportNamespacePrefixes:NO];

[parser setShouldResolveExternalEntities:NO];

parser.delegate = self;

[parser parse];

[parser release];

三、解析XML数据

1、遍例xml的节点,执行以下代理方法

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

xmlelement = [[NSString alloc]initWithString:elementName];

//xmlelement为XML元素节点(xmlelement为字符串变量,是在.h文件中定义的。)

}

2、当xml节点有值时,则执行以下代理方法

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

if ([xmlelement isEqualToString:@"START_TIME"]) {

[ywKPI.times addObject:[string substringToIndex:10]];

}

//START_TIME XML文件内容节点,ywKPI.times 数组对象,string xml文件START_TIME 节点值。 以下类似。

if ([xmlelement isEqualToString:@"REGION_USERLABEL"]) {

[ywKPI.citys addObject:string];

}

if ([xmlelement isEqualToString:@"BHTIME_CS"]) {

[ywKPI.dlymss addObject:string];

}

if ([xmlelement isEqualToString:@"BHTIME_PS"]) {

[ywKPI.fzymss addObject:string];

}

if ([xmlelement isEqualToString:@"GSM_NET_RATE"]) {

NSString *gsmwljtl =[[NSString alloc]initWithFormat: @"%@%@",[NSString stringWithFormat:@"%.2f",[string floatValue]],@"%"];

[ywKPI.gsmwljtls addObject:gsmwljtl];

}

}

3、当遇到XML节点结束标记时,执行以下代理方法

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

xmlelement = nil;

//xmlelement为字符串变量,是在.h文件中定义的。

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: