繁体   English   中英

将XML解析的数据添加到iPhone中的NSMutableArray?

[英]Adding XML parsed data to NSMutableArray in iPhone?

我正在解析XML响应并将其添加到NSMutableArray。问题是XML响应的最后一个值未添加到NSMutableArray。无法得到我要去哪里的错误? 我的XML文件如下所示:

<IDList>
   <Employee>
      <ID>1</ID>
   </Employee
   <Employee>
      <ID>2</ID>
   </Employee>
   <Employee>
      <ID>3</ID>
   </Employee>
   <Employee>
      <ID>4</ID>
   </Employee>
</IDList>

Iam编写的用于解析的代码是:

 - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {



 if([elementName isEqualToString:@"IDList"])
 {
 arr1=[[NSMutableArray alloc] init];
 drr1=[[NSMutableDictionary alloc] init];

 }
 if([elementName isEqualToString:@"Employee"])
 { 
 drr1=[[NSMutableDictionary alloc] init];        
 }
 srr1=[[NSMutableString alloc] init];

 } 


 -(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{


 [srr1 appendString:string];
 }


 - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {

 if([elementName isEqualToString:@"ID"])
 {

 [drr1 setObject:srr1 forKey:@"ID"];
 [srr1 release],srr1=nil;
 return;
 }  

 if([elementName isEqualToString:@"Employee"]) 
 { 
 [arr1 addObject:drr1]; 
 }    


 if([elementName isEqualToString:@"IDList"])
 {

 [drr1 release];

 }

 [srr1 release],srr1=nil;

 }

我在arr1中看到的结果是:

 (
    {
      ID="1",
    }
    {
      ID="2",
    }
    {
      ID="3",
    }
    {
      ID="",
    }
    )

我看不到最后一个值。如何获得所有物品?

我不知道它是否可以解决任何问题,但这是我会做的:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {

    if ([elementName isEqualToString:@"IDList"]) {        
         arr1=[[NSMutableArray alloc] init];
    }
    else if ([elementName isEqualToString:@"Employee"]) { 
        drr1=[[NSMutableDictionary alloc] init];
        [arr1 addObject:drr1]; 
    }
    else if ([elementName isEqualToString:@"ID"]) {
        srr1=[[NSMutableString alloc] init];
    }
 } 

 - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
     [srr1 appendString:string];
 }

 - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {

    if ([elementName isEqualToString:@"ID"]) {
        [drr1 setObject:srr1 forKey:@"ID"];
        [srr1 release],srr1=nil;
        return;
    }  
    else if ([elementName isEqualToString:@"Employee"]) { 
        [drr1 release];
        drr1 = nil; 
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM