简体   繁体   English

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

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

I am parsing XML response and adding it to NSMutableArray.The problem islast value of XML response is not getting added to NSMutableArray..Couldn't get where I am going wrong? 我正在解析XML响应并将其添加到NSMutableArray。问题是XML响应的最后一个值未添加到NSMutableArray。无法得到我要去哪里的错误? My XML file looks like this: 我的XML文件如下所示:

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

And the code Iam writing for parsing is : 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;

 }

The result I could see in arr1 is: 我在arr1中看到的结果是:

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

I could not see the last value.How can I get all the items ? 我看不到最后一个值。如何获得所有物品?

I don't know if it will fixes anything, but this is what I would do: 我不知道它是否可以解决任何问题,但这是我会做的:

- (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