使用NSXML解析器在iphone中解析XML

使用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"; 
    } 
) 
+0

这是你作为你的数据源的一些可怕的XML文档.. .. –

this是一个链接,您可以将XML到NSDictionary中的形式,它包含两个文件XMLReader.h和XMLReader.m你需要在你的项目中添加和使用代码的代码在你需要它以这种形式

NSDictionary *xmlDictionary = [XMLReader dictionaryForXMLString:testXMLString error:&parseError]; 

// Print the dictionary 
NSLog(@"%@", xmlDictionary); 

希望这将帮助你