0

私はiPhone開発の初心者で、解析についてあまり知りません。しかし、距離要素のテキストを取得するために次のコードを試しました。次のリンクの XML 解析を行っています。

http://maps.googleapis.com/maps/api/directions/xml?origin=30.9165904,75.8634752&destination=30.89314000,75.86938000&sensor=true

私が試したコードを確認してください:

-(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

{

 if ([elementName isEqualToString:@"distance"])
{
    [distanparsingarray addObject:dictionary];

}

}

  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.

前もって感謝します。

4

1 に答える 1

0

以下の方法で管理する必要があります。クラスレベルでBOOL変数を追加します。currentElementを距離として識別するときに設定します。上記のBOOLがtrueの場合にのみ、見つかった文字の内部で文字列がテキストに追加されます。currentElementがdistanceと等しくない場合、didEndElementでこのBOOLを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;
     }
}
于 2012-06-25T11:37:54.430 に答える