0

XML パーサーから取得したデータを に追加するNSMUtableArrayと、最後の値を除くすべての値が追加されていることがわかります

私の XML 応答は次のようになります。

<List1>
 <CompanyProvider>
    <TimeStart>11:00</TimeStart>
  </CompanyProvider>
  <CompanyProvider>
    <TimeStart>11:15</TimeStart>
 </CompanyProvider>
 <CompanyProvider>
    <TimeStart>11:30</TimeStart>
 </CompanyProvider>
 <CompanyProvider>
    <TimeStart>11:45</TimeStart>
 </CompanyProvider>
<List1>
<CompanyTimeList>
   <CompanyProvider>
     <TimeStart>11:00</TimeStart>
   </CompanyProvider>
   <CompanyProvider>
     <TimeStart>11:15</TimeStart>
   </CompanyProvider>
   <CompanyProvider>
     <TimeStart>11:30</TimeStart>
   </CompanyProvider>
   <CompanyProvider>
     <TimeStart>11:45</TimeStart>
   </CompanyProvider>
</CompanyTimeList>

そして、CompanyTimeList から TimeStart の値を消費する必要があります。使用しているコードは次のとおりです。

-(void)ButtonClicked
{
    arr1 = [[NSMutableArray alloc] init];
    drr1 = [[NSMutableDictionary alloc] init];

    NSString *urlString = [NSString stringWithFormat:@"http://192.168.0.101:8732/Design_Time_Addresses/IServices/AppointmentService/json/GetAppointments/?cid=999a18dd-50a6-4da0-b692-ef173834435b&pid=aee49598-6199-4f57-90e2-654da651c944&wk=Tuesday&dt=10/16/2012"];    
    NSURL *jsonUrl =[NSURL URLWithString:urlString];
    NSString *jsonStr = [[NSString alloc] initWithContentsOfURL:jsonUrl];  
    NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:jsonUrl];      

    [parser setDelegate:self];
    [parser setShouldProcessNamespaces:NO];
    [parser setShouldReportNamespacePrefixes:NO];
    [parser setShouldResolveExternalEntities:NO];
    [parser parse];
    [parser release];

    NSLog(@"%@",arr1);      
}

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

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

    if([elementName isEqualToString:@"CompanyProvider"])
    { 
        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:@"TimeStart"])
    {    
        [drr1 setObject:srr1 forKey:@"TimeStart"];
        [srr1 release],srr1=nil;
        return;
    }  

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

    if([elementName isEqualToString:@"CompanyTimeList"])
    {      
        [drr1 release];  
    }

    [srr1 release], srr1 = nil;
}

しかし、私が見ることができる応答は次のとおりです。

(
    {
        TimeStart="11:00"
    },
    {
        TimeStart="11:15"
    },
    {
        TimeStart="11:30"
    }
    {
        TimeStart=""
    }
)

最後の値が表示されません。つまり、11:45.Y がありません。どこが間違っているのですか?

4

0 に答える 0