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

时间:2012-10-30 06:47:31

标签: iphone xcode nsxmlparser

我是iphone的新手。我有这个xml Response.How我可以使用NSXML Parser解析它吗?

<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)和Name(Ravi)的值。我不想要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";
  }
  )

1 个答案:

答案 0 :(得分:0)

this是一个链接,您可以将XML转换为NSDictionary表单,它包含两个文件XMLReader.h和XMLReader.m,您需要在项目中添加并使用代码中的代码形式

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

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

希望这会对你有所帮助