【发布时间】:2013-07-04 02:14:10
【问题描述】:
我有一个从 Restful Web 服务中提取数据的 iOS 应用。我收到的部分内容正在加载到UITextView。将进入文本视图的部分以 HTML 格式出现。我需要将其从 HTML 转换为纯文本,同时使用段落标签正确格式化文本视图。
这是 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 解析为纯文本提出一个 sn-p 吗?
解决方案
根据 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的推荐!
【问题讨论】:
标签: iphone ios html-parsing libxml2 nsscanner