iPhone - NSScanner无法解析

时间:2011-06-12 12:41:48

标签: iphone xml parsing nsstring nsscanner

我正在使用此方法查找第一个<>耦合成一个字符串(XML内容):

NSScanner* scanner = [NSScanner scannerWithString:contentToParse];
int startPos = 0;
int endPos = 0;

// Open search
if ([scanner scanString:@"<" intoString:nil]) {
    startPos = [scanner scanLocation]-1;
    NSLog(@"found '<' at pos %i", startPos);

    // close search
    if ([scanner scanString:@">" intoString:nil]) {
        endPos = [scanner scanLocation]-1;
        NSLog(@"found '>' at pos %i", endPos);

        NSString* tag = [contentToParse substringWithRange:NSMakeRange(startPos, endPos-startPos)];
        NSLog(@"Tag found : %@", tag);
    }
}

但只有“找到”&lt;'在pos 0“被记录。 我的XML内容包含许多&lt;&gt;项...

为什么这种方法不起作用?

1 个答案:

答案 0 :(得分:3)

scanString:intoString:尝试扫描当前位置的字符串参数 。如果当前位置不存在此类字符串,则只返回NO

您可能需要使用scanUpToString:intoString:reference)来扫描推进扫描位置,直到遇到给定的字符串。

NSScanner *scanner = [NSScanner scannerWithString:contentToParse];
// open search
[scanner scanUpToString:@"<" intoString:nil];
if (![scanner isAtEnd]) {
    [scanner scanString:@"<" intoString:nil];
    // close search
    NSString *tag = nil;
    [scanner scanUpToString:@">" intoString:&tag];
    if (![scanner isAtEnd]) {
        NSLog(@"Tag found : %@", tag);
    }
}