在iphone中使用NSXMLParser进行XML解析?

在iphone中使用NSXMLParser进行XML解析?

问题描述:

我解析XML response.But我没有得到期望的result.Could不明白的地方,我要去错了吗? 我的XML响应如下所示:在iphone中使用NSXMLParser进行XML解析?

<List> 
    <User> 
     <Id>1</Id> 
    </User> 
    <User> 
     <Employee> 
      <Name>John</Name> 
      <TypeId>0</TypeId> 
      <Id>0</Id> 
     </Employee> 
     <Id>0</Id> 
    </User> 
</List> 

从这个我想ID(1)和名称(约翰)的价值。我不想ID(0)

我的解析代码是:

- (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:@"Id"]) 
    { 

     [drr setObject:srr forKey:@"Id"]; 
     [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:@"List"]) 
    { 
     [drr release]; 

    } 

    [srr release],srr=nil; 

    } 

我想输出是:

(
{ 
Name="John"; 
Id="1"; 
} 
) 

但是我得到这样的:

(
     { 
     Name = John; 
     Id = "0"; 
    }, 
     { 
     Name = John; 
     Id = "0"; 
    } 
) 

我该怎么办呢?

+0

使用本连结[XML解析示例] [1] [1]:http://stackoverflow.com/questions/13117711/unable-to-store-and-retrieve-xml-data-从-的NSMutableArray/13119018#13119018 – NANNAV

+0

在您的示例中列出的XML是非常奇怪。基于它看起来像有2个用户(ID 0和ID 1)的格式,并且该用户有0 /名为约翰其ID也为0的雇员,并且是类型ID 0。这是更奇怪所作的结果你想要“Name = John:Id = 1”的事实。我可以理解,在许多情况下,您不能发布真实的XML数据,但接近真实的东西肯定会帮助我们帮助您。 – NJones

+0

但是我正从服务URL这种反应,我必须这样做,因为它是..我不能改变service.Please帮助.. – Honey

我建议你使用TBXML代替的NSXMLParser。它使用起来更快,更容易。