Как преобразовать разметку NSString HTML в обычный текст NSString?

Поиск в сети для примера того, как преобразовать разметку строки HTML в обычный текст.

Я получаю информацию из канала, который содержит HTMLЗатем я отображаю эту информацию в текстовом представлении. делает UITextView иметь свойство конвертировать HTML или я должен сделать это в коде. Я старался:

NSString *str = [NSString stringWithCString:self.fullText encoding:NSUTF8StringEndcoding];

но не похоже на работу. У кого-нибудь есть идеи?

4 ответа

Решение

Вы можете сделать это, проанализировав HTML с помощью класса NSScanner.

- (NSString *)flattenHTML:(NSString *)html {

    NSScanner *theScanner;
    NSString *text = nil;
    theScanner = [NSScanner scannerWithString:html];

    while ([theScanner isAtEnd] == NO) {

        [theScanner scanUpToString:@"<" intoString:NULL] ; 

        [theScanner scanUpToString:@">" intoString:&text] ;

        html = [html stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"%@>", text] withString:@""];
    }
    //
    html = [html stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

    return html;
}

Надеюсь это поможет.

Если вы используете UIWebView, тогда будет проще разобрать HTML в текст:

fullArticle = [webView stringByEvaluatingJavaScriptFromString:@"document.body.getElementsByTagName('article')[0].innerText;"]; // extract the contents by tag

fullArticle = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerText"]; // extract text inside body part of HTML

Вы не можете сделать это напрямую, я думаю... однако вы можете использовать NSXML Parser и анализировать HTML и получать именно то, что вы хотите...

Если вам нужно представить текст только для чтения, почему бы не использовать UIWebView?

Другие вопросы по тегам