Отказ от ответственности: Для анализа HTML лучше использовать анализатор HTML, такой как анализатор HTML 4 в libxml, особенно для работы с произвольным, возможно, искаженным HTML.В любом случае, поскольку вопрос состоит в том, как улучшить существующий код, используя NSParser
, я приведу следующий пример.Это будет работать в большинстве случаев, но в некоторых случаях это не так.Для серьезного разбора HTML используйте анализатор HTML.
Повторяйте, пока сканер не исчерпал все символы:
NSScanner* scanner = [NSScanner scannerWithString:html];
NSMutableArray *paragraphs = [[NSMutableArray alloc] init];
[scanner scanUpToString:@"<p" intoString:nil];
while (![scanner isAtEnd]) {
[scanner scanUpToString:@">" intoString:nil];
[scanner scanString:@">" intoString:nil];
NSString * text = nil;
[scanner scanUpToString:@"</p>" intoString:&text];
if (text) { // if html contains empty paragraphs <p></p>, text could be nil
[paragraphs addObject:text];
}
[scanner scanUpToString:@"<p" intoString:nil];
}
...
[paragraphs release];