我有一个从Restful Web服务中提取数据的iOS应用程序。我收到的部分内容正在加载到UITextView
。将进入文本视图的部分以HTML格式进入。我需要将它从HTML转换为纯文本,同时使用段落标签来正确地格式化文本视图。如何在保持段落格式的同时将HTML解析为PlainText
这里是什么HTML格式看起来像
<p data-seq="1"><span class="paragraph">Content of paragraph 1</span></p><p data-seq="2"><span class="paragraph">Content of paragraph 2</span></p>
你可以看到,<p data-seq="2"><span class="paragraph">....</span></p>
指定段落的开始和结束。
我最初尝试使用此示例中的NSScanner
,How to convert NSString HTML markup to plain text NSString?。这很快就实现了,但它将所有标签剥离并将文本解析为一个长段落。
我已将libXml2
添加到我的代码中。我开始遵循这个tutorial的实现,但在我开始工作之后,我不确定如何将输出格式化为段落。
我也看到了DTCoreText library的建议,但我没有看到很多关于它的信息。
有人可能会抛出一个片段使用任何上述三个选项或自己的一个关于如何解析HTML到纯文本,同时保持段落?
SOLUTION
每LXT的建议我调查DTCoreText
。一旦我设法让它安装在我的应用程序(绝对推荐可可豆荚)。这很容易,因为我的detailViewController
中的#import "DTCoreText.h"
然后是下面的行将它添加到UITextView
。
NSDictionary *options = @{DTUseiOS6Attributes: [NSNumber numberWithBool:YES]};
NSData *htmlData = [self.htmlString dataUsingEncoding:NSUTF8StringEncoding];
NSAttributedString *stringArticle = [[NSAttributedString alloc] initWithHTMLData:htmlData options:options documentAttributes:NULL];
self.newsDetailText.attributedText = stringArticle;
第一次构建失败,因为我没有包含DTUseiOS6Attributes
行。第二次构建成功,并且详细视图被完美格式化。这是一个拳头泵的时刻!再次感谢您的建议lxt!
lxt,谢谢你的回复。我应该说:“我没有学习关于'DTCoreText'解析器的更多信息,我在github上看了一遍,看到了一个关于'NSAttributedString'的片段,我将阅读文档和你推荐的方法,看看我是否可以弄清楚如何使它工作。 – Ben