Iphone XML解析中的元素
我是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
-(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;
}
}