Это мой код:
NSURL *url=[NSURL URLWithString:@"http://www.engadget.com"]; NSString *webPage=[[NSString alloc]initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
В строке webPage я получил html-страницу ссылки. В этой строке много тегов и текста. Я хочу взять только текст без каких-либо тегов.
Я хочу отобразить этот текст в моем UITextView. Как я могу это сделать?
Это лучший ответ и именно то, что вы ищете:
Напишите следующий скрипт в методе делегата webView. (UIWebviewdidfinishLoading)
UIWebviewdidfinishLoading
NSString *myText = [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.textContent"];
Лучшее решение:
- (NSString *)flattenHTML:(NSString *)html { NSScanner *theScanner; NSString *text = nil; theScanner = [NSScanner scannerWithString:html]; while ([theScanner isAtEnd] == NO) { // find start of tag [theScanner scanUpToString:@"<" intoString:NULL] ; // find end of tag [theScanner scanUpToString:@">" intoString:&text] ; // replace the found tag with a space //(you can filter multi-spaces out later if you wish) html = [html stringByReplacingOccurrencesOfString: [ NSString stringWithFormat:@"%@>", text] withString:@" "]; } // while // return html; }
Ссылка: http://rudis.net/content/2009/01/21/flatten-html-content-ie-strip-tags-cocoaobjective-c
Из того, что я пытался, эта справилась лучше всего. Несмотря на то, что NSSCanner не является для этого более подходящим решением, если html / xml хорошо сформирован, у вас все будет хорошо.