2

我是 iphone 新手。我有这个 xml 响应。如何使用 NSXML 解析器解析它?

<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";
  }
  )
4

1 回答 1

0

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

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

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

希望对你有帮助

于 2012-10-30T08:59:00.953 回答