关闭

NSXMLParser解析XML数据

177人阅读 评论(0) 收藏 举报
分类:
Cpp代码  收藏代码
  1. NSXMLParser解析XML数据 用法如下:  
  2. 一、首先,必须继承NSXMLParserDelegate协议   
  3. @interface ViewController : UIViewController<NSXMLParserDelegate>   
  4. 二、设置XML数据,并初始化NSXMLParser:   
  5. 1、从本地XML文件中读取数据   
  6. NSString *strPathXml = [[NSBundle mainBundle] pathForResource:@"group" ofType:@"xml"];   
  7. NSData *xmlData = [[NSData alloc] initWithContentsOfFile:strPathXml];  
  8. NSXMLParser *parserXML = [[NSXMLParser alloc] initWithData:xmlData];   
  9. [parser setShouldProcessNamespaces:NO];   
  10. [parser setShouldReportNamespacePrefixes:NO];   
  11. [parser setShouldResolveExternalEntities:NO];   
  12. [parser setDelegate:self];   
  13. [parser parse];   
  14. [parser release];   
  15. 2、从接口Java Servlet中获取数据   
  16. NSString *nstrYwKPIUrl = [[NSString alloc]initWithFormat:@"%@?citys=%@&startTime=%@&endTime=%@&indexNames=%@",YWKPIURL,city,startTime,endTime,zbz];   
  17. //Servlet访问地址与传递参数   
  18. NSString *encodedURL = [nstrYwKPIUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];   
  19. //对Servlet访问地址进行编码   
  20. NSLog(@"encodedURL is %@",encodedURL);   
  21. NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:[NSURL URLWithString:encodedURL ]];   
  22. [parser setShouldProcessNamespaces:NO];   
  23. [parser setShouldReportNamespacePrefixes:NO];   
  24. [parser setShouldResolveExternalEntities:NO];   
  25. parser.delegate = self;   
  26. [parser parse];   
  27. [parser release];  
  28. 三、解析XML数据   
  29. 1、遍例xml的节点,执行以下代理方法   
  30. -(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {   
  31. xmlelement = [[NSString alloc]initWithString:elementName];  
  32.  //xmlelement为XML元素节点(xmlelement为字符串变量,是在.h文件中定义的。)   
  33. }   
  34. 2、当xml节点有值时,则执行以下代理方法   
  35. - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {  
  36.  if ([xmlelement isEqualToString:@"START_TIME"]) {   
  37. [ywKPI.times addObject:[string substringToIndex:10]];  
  38.  }   
  39. //START_TIME XML文件内容节点,ywKPI.times 数组对象,string xml文件START_TIME 节点值。 以下类似。   
  40. if ([xmlelement isEqualToString:@"REGION_USERLABEL"]) {   
  41. [ywKPI.citys addObject:string];   
  42. }   
  43. if ([xmlelement isEqualToString:@"BHTIME_CS"]) {  
  44.  [ywKPI.dlymss addObject:string];   
  45. }   
  46. if ([xmlelement isEqualToString:@"BHTIME_PS"]) {   
  47.  [ywKPI.fzymss addObject:string];   
  48. }   
  49. if ([xmlelement isEqualToString:@"GSM_NET_RATE"]) {   
  50. NSString *gsmwljtl =[[NSString alloc]initWithFormat: @"%@%@",[NSString stringWithFormat:@"%.2f",[string floatValue]],@"%"];  
  51.  [ywKPI.gsmwljtls addObject:gsmwljtl];   
  52. }   
  53. }   
  54. 3、当遇到XML节点结束标记时,执行以下代理方法   
  55. -(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {   
  56. xmlelement = nil;  
  57. //xmlelement为字符串变量,是在.h文件中定义的。   
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:17965次
    • 积分:416
    • 等级:
    • 排名:千里之外
    • 原创:20篇
    • 转载:31篇
    • 译文:0篇
    • 评论:1条
    最新评论