0

在我正在制作的 iOS 程序中,我正在请求使用 SOAP 的课程列表。这是回复格式

<ListCoursesResponse>
          <statusMessage xmlns="xxx">string</statusMessage>
          <courseID xmlns="xxx">string</courseID>
          <courseTitle xmlns="xxx">string</courseTitle>
        </ListCoursesResponse>
        <ListCoursesResponse>
          <statusMessage xmlns="xxx">string</statusMessage>
          <courseID xmlns="xxx">string</courseID>
          <courseTitle xmlns="xxx">string</courseTitle>
</ListCoursesResponse>

我使用的方法是将每个单独的课程提取为数组中的一个元素,而不是逐步遍历每个课程的数组并提取课程 ID 之间的内容。但是,我不知道如何提取多个,因为当我返回它时,它只显示第一门课程。如果我以不好的方式解释了这一点,请告诉我,以便我可以尝试更好地解释。

我的问题是,处理在 XML 响应中返回的大量课程(200 多个)的最佳方法是什么?

编辑:我正在使用的代码片段,它只返回 1 个 ID。

NSString *tag1Open = @"<ListCoursesResponse>";
    NSString *tag1Close = @"</ListCoursesResponse>";
    NSString *courseIDOpen = @"<courseID xmlns=\"http://drm.mediuscorp.com/\">";
    NSString *courseIDClose = @"</courseID>";
    result = @"";
    NSArray *XMLarray1 = [XMLResult componentsSeparatedByString:tag1Open];
    if ([XMLarray1 count] > 1) {

        for (int i = 0; i < [XMLarray1 count]; i++) {
            NSString *courseIDString = [[[XMLarray1 objectAtIndex:1]componentsSeparatedByString:tag1Close]objectAtIndex:0];

            NSArray *courseID = [XMLResult componentsSeparatedByString:courseIDOpen];

            if ([courseID count] > 1) {

                for (int i = 0; i < [courseID count]; i++) {
                    courseIDString = [[[courseID objectAtIndex:1]componentsSeparatedByString:courseIDClose]objectAtIndex:0];

                }

            }
        NSLog(@"Course ID: %@",courseIDString);


        }
        [persArray addObject:result];
        for (int i = 0; i < [persArray count]; i++) {
            NSLog(@"%@",[persArray objectAtIndex:i]);
        }
    }
4

1 回答 1

1

与其尝试使用 NSString 方法自己解析 SOAP XML 响应响应,不如使用 XML Parser 来处理此任务。iOS 有一个内置的 XML Parser,称为NSXMLParser,可供您使用。(还有许多可用的第三方 XML Parser 组件,包括 SAX 和 DOM 变体)

这是一个教程,给出了一个使用 NSXMLParser 的例子

于 2012-08-13T21:46:37.953 回答