【问题标题】:how to parse gdata xml in iPhone?如何在 iPhone 中解析 gdata xml?
【发布时间】:2011-06-24 16:51:51
【问题描述】:

这里是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 

在应用程序中,我想在应用程序启动时在 tableviewcontroller 中显示主题名称,当我们点击 tableviewcell 时,它会引导到另一个显示 sub_subject 列表的表格视图。

如何实现 为此。

+ (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 中完美显示,但是当我点击在另一个视图控制器中提供子主题的特定主题时

【问题讨论】:

  • 两件事:1:请学会正确地格式化你的答案。如果您选择一个代码片段并且他们按下带有{} 图标的按钮,它将正确格式化它。 2:看起来你在按下提交之前没有写完问题。

标签: iphone objective-c xml parsing gdata


【解决方案1】:

这是一个很好的教程,展示了使用 GDataXMLParser 进行 XML 解析。

how-to-read-and-write-xml-documents-with-gdataxml

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多