簡體   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