Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone XML解析中的元素_Iphone_Ios - Fatal编程技术网

Iphone XML解析中的元素

Iphone XML解析中的元素,iphone,ios,Iphone,Ios,我是iphone开发的新手,对解析不太了解。但我尝试了以下代码来获取距离元素文本。我正在对以下链接进行XMl解析: 请检查我已尝试的代码: -(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes: (NSDictionary *)attr

我是iphone开发的新手,对解析不太了解。但我尝试了以下代码来获取距离元素文本。我正在对以下链接进行XMl解析:

请检查我已尝试的代码:

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

 currentElement = [elementName copy];
if([currentElement isEqualToString:@"distance"])


{
       NSLog(@"ENTER IN distance");
      text = [[NSMutableString alloc]init];

  {
       dictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:text,@"text",nil];
  }

    }

}


-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
  {
      if ([currentElement isEqualToString:@"text"])
     {
        [dictionary setObject:text forKey:currentElement];
        [text appendString:string];
        NSLog(@"text....%@",text);
     }
}


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

}


提前感谢。

您必须通过下面的方式进行管理。 在类级别添加BOOL变量。将currentElement标识为距离时设置它。 仅当上述布尔值为真时,内部找到的字符才会将字符串附加到文本。 当currentElement不等于distance时,在DiEndElement中将此布尔设为false

-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:
(NSDictionary *)attributeDict
{ 
     currentElement = [elementName copy];
     if([currentElement isEqualToString:@"distance"])
     {
         flag = TRUE; //created at class level.
         NSLog(@"ENTER IN distance");
         text = [[NSMutableString alloc]init];    
         {
              dictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:text,@"text",nil];
         }    
    }
}

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
     if ([currentElement isEqualToString:@"text"] && flag == TRUE)
     {
        [dictionary setObject:text forKey:currentElement];
        [text appendString:string];
        NSLog(@"text....%@",text);
     }
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:  
 (NSString *)namespaceURI qualifiedName:(NSString *)qName
{  
     if ([elementName isEqualToString:@"distance"])
     {
         [distanparsingarray addObject:dictionary];
         flag = FALSE;
     }
}
  By using above method I am getting the text both of distance and duration. But I want only distance text. Please tell me what I am doing wrong in above code.
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:
(NSDictionary *)attributeDict
{ 
     currentElement = [elementName copy];
     if([currentElement isEqualToString:@"distance"])
     {
         flag = TRUE; //created at class level.
         NSLog(@"ENTER IN distance");
         text = [[NSMutableString alloc]init];    
         {
              dictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:text,@"text",nil];
         }    
    }
}

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
     if ([currentElement isEqualToString:@"text"] && flag == TRUE)
     {
        [dictionary setObject:text forKey:currentElement];
        [text appendString:string];
        NSLog(@"text....%@",text);
     }
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:  
 (NSString *)namespaceURI qualifiedName:(NSString *)qName
{  
     if ([elementName isEqualToString:@"distance"])
     {
         [distanparsingarray addObject:dictionary];
         flag = FALSE;
     }
}