- 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文件中定义的。
- }
NSXMLParser解析XML数据
最新推荐文章于 2020-07-17 11:04:12 发布