使用NSXML解析器在iphone中解析XML
问题描述:
我是iphone的新手。我有这个XML Response.How可以使用NSXML解析器解析它吗?使用NSXML解析器在iphone中解析XML
<MyList>
<Emp>
<EmpId>918704ec-4811-45b6-a169-16bae3df3452</EmpId>
</Emp>
<Emp>
<Details>
<Name>Ravi</Name>
<EmpId>00000000-0000-0000-0000-00000000</EmpId>
</Details>
<EmpId>00000000-0000-0000-0000-00000000</EmpId>
</Emp>
</MyList>
从这个我想EMPID(918704ec-4811-45b6-a169-16bae3df3452)和名称(拉维)的价值。我不想EMPID(00000000-0000-0000-0000-00000000) 解析代码是:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
if ([elementName isEqualToString:@"List"])
{
arr=[[NSMutableArray alloc] init];
drr=[[NSMutableDictionary alloc] init];
}
srr=[[NSMutableString alloc] init];
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
[srr appendString:string];
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if([elementName isEqualToString:@"EmpId"])
{
[drr setObject:srr forKey:@"EmpId"];
[srr release],srr=nil;
return;
}
if([elementName isEqualToString:@"Name"])
{
[drr setObject:srr forKey:@"Name"];
[srr release],srr=nil;
[arr addObject:drr];
return;
}
if([elementName isEqualToString:@"MyList"])
{
[drr release];
}
[srr release],srr=nil;
}
我需要回应是这样的:
(
{
Name="Ravi";
Id="918704ec-4811-45b6-a169-16bae3df3452";
}
)
答
this是一个链接,您可以将XML到NSDictionary中的形式,它包含两个文件XMLReader.h和XMLReader.m你需要在你的项目中添加和使用代码的代码在你需要它以这种形式
NSDictionary *xmlDictionary = [XMLReader dictionaryForXMLString:testXMLString error:&parseError];
// Print the dictionary
NSLog(@"%@", xmlDictionary);
希望这将帮助你
这是你作为你的数据源的一些可怕的XML文档.. .. –