我试图解析一个xml,它有一个根元素和两个同名的子元素。然而,它们一直连接在一起。我该如何解决这个问题呢?到目前为止,以下是我的代码
-
(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
element = elementName;
if([element isEqualToString:@"bustime-response"]){
self.item = [[NSMutableDictionary alloc]init];
self.direction =[[NSMutableString alloc]init];
}
}
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
if ([element isEqualToString:@"dir"]){
string = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
[self.direction appendString:string];
}
}发布于 2013-12-06 03:09:21
试试这个,它对我很有效:
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
element = elementName;
if ([element isEqualToString:@"bustime-response"])
{
elementFound = YES;
if (self.item)
self.item = nil;
self.item = [[NSMutableDictionary alloc]init];
if (self.direction)
self.direction = nil;
self.direction =[[NSMutableString alloc]init];
}
}
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if (elementFound)
{
if ([element isEqualToString:@"dir"]){
string = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
[self.direction appendString:string];
}
//Add another if with the tag you want to retrieve the data from here
}
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if ([element isEqualToString:@"bustime-response"])
{
elementFound = NO;
// self.receivedDataArray - main array to store all of your dictionary
[self.receivedDataArray addObject: self.direction];
[self.receivedDataArray addObject: self.item];
self.direction = nil;
self.item = nil;
}
}如您所见,您必须添加另一个BOOL变量elementFound和NSMutableArray receivedDataArray来存储所有数据。试一试,让我知道它是否适合你。记住,添加NSLogs用于调试是很好的,它有很大的帮助。
https://stackoverflow.com/questions/20407995
复制相似问题