2011-02-10 9 views
2

は、アプリ内のXMLiPhoneでgdata xmlを解析する方法は?ここ

Root---> 
    Subject---> 
      SubjectID 1 /SubjectID 
      SubjectName MatheMatics /SubjectName 
         Sub_Subject----> 
           Sub_SubjectID 1 /Sub_SubjectID 
           Sub_SubjectName Calculus /Sub_SubjectName 
         /Sub_Subject 
         Sub_Subject 
         Sub_SubjectID 2 /Sub_SubjectID 
         Sub_SubjectName Geometry /Sub_SubjectName 
         /Sub_Subject 
     /Subject 
     Subject----> 
      SubjectID 2 /SubjectID 
      SubjectName Physics /SubjectName 
     /Subject 
/Root 

である私たちはtableviewcellをクリックしたときにアプリケーションの起動&それはsub_subjectリストを示し、別のテーブルビューに進んでいる場合tableviewcontrollerでサブジェクト名を表示したいです。

これを達成する方法 この貫通

+ (NSString *)dataFilePath:(BOOL)forSave { 
    return [[NSBundle mainBundle] pathForResource:@"SubjectData" ofType:@"xml"]; 
} 

+ (RootSubject *)loadParty { 

    NSString *filePath = [self dataFilePath:FALSE]; 
    NSData *xmlData = [[NSMutableData alloc] initWithContentsOfFile:filePath]; 
    NSError *error; 
    GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:xmlData 
                  options:0 error:&error]; 
    /* if (doc == nil) { return nil; } 

    NSLog(@"%@", doc.rootElement); 

    [doc release]; 
    [xmlData release]; 
    return nil;*/ 
    RootSubject *rootSubject = [[[RootSubject alloc] init] autorelease]; 

    NSArray *partyMembers = [doc nodesForXPath:@"//Root/Subject" error:nil]; 
    //NSArray *patry = [doc nodesForXPath:@"//Root/Subject/SunjectID" error:nil]; 
    for (GDataXMLElement *partyMember in partyMembers) { 

     // Let's fill these in! 
     NSString *subjectId, *subjectName, *sub_SubjectId, *sub_SubjectName; 


     // senderName 
     NSArray *subjectIds = [partyMember elementsForName:@"SubjectID"]; 
     if (subjectIds.count > 0) { 
      GDataXMLElement *firstName = (GDataXMLElement *) [subjectIds objectAtIndex:0]; 
      subjectId = firstName.stringValue; 
     } else continue; 

     // senderEmail 
     NSArray *subjectNames = [partyMember elementsForName:@"SubjectName"]; 
     if (subjectNames.count > 0) { 
      GDataXMLElement *firstLevel = (GDataXMLElement *) [subjectNames objectAtIndex:0]; 
      subjectName = firstLevel.stringValue; 
     } else continue; 

    /* //senderPhone 
     NSArray *sub_SubjectIds = [partyMember elementsForName:@"Sub_SubjectID"]; 
     if (sub_SubjectIds.count > 0) { 
      GDataXMLElement *firstName = (GDataXMLElement *) [sub_SubjectIds objectAtIndex:0]; 
      sub_SubjectId = firstName.stringValue; 
     } else continue; 

     //senderLocation 
     NSArray *sub_SubjectNames = [partyMember elementsForName:@"Sub_SubjectName"]; 
     if (sub_SubjectNames.count > 0) { 
      GDataXMLElement *firstName = (GDataXMLElement *) [sub_SubjectNames objectAtIndex:0]; 
      sub_SubjectName = firstName.stringValue; 
     } else continue;*/ 

     //Subject *subject = [[[Subject alloc]initWithSubjectId:subjectId subjectName:subjectName sub_SubjectId:sub_SubjectId sub_SubjectName:sub_SubjectName]autorelease]; 
     Subject *subject = [[[Subject alloc]initWithSubjectId:subjectId subjectName:subjectName sub_SubjectId:nil sub_SubjectName:nil]autorelease]; 
     //Subject *subject = [[[Subject alloc]initWithSubjectId:subjectId subjectName:nil sub_SubjectId:sub_SubjectId sub_SubjectName:sub_SubjectName]autorelease]; 

     //[rootGroup.groups addObject:group]; 
     [rootSubject.subjects addObject:subject]; 

    } 
    [doc release]; 
    [xmlData release]; 
    return rootSubject; 



} 

我々は、サブジェクト名を取得し、tableviewcontrollerで完全にそれを示したが、私は、特定の対象をクリックしたときに別のビューコントローラここ

+0

2つのこと:1:適切にあなたの答えをフォーマットすることを学ぶしてください。コードフラグメントを選択し、 '{}'アイコンを使ってボタンを押すと、適切にフォーマットされます。 2:提出を押す前に質問を書き終えていないようです。 – JeremyP

答えて

関連する問題