Как преобразовать разметку 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?