• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

iphone - 如何在保持段落格式的同时将 HTML 解析为纯文本

[复制链接]
菜鸟教程小白 发表于 2022-12-12 12:17:19 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个从 Restful Web 服务中提取数据的 iOS 应用。我收到的部分内容正在加载到 UITextView 中。将进入 TextView 的部分以 HTML 格式出现。我需要将它从 HTML 转换为纯文本,同时使用段落标签来正确格式化 TextView 。

这是 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>

可以看到

....

指定了开始和结束段落。

我最初尝试使用此示例中的 NSScannerHow to convert NSString HTML markup to plain text NSString? .这实现起来很快,但它会去除所有标签并将文本解析为一个长段落。

我已将 libXml2 添加到我的代码中。我开始关注这个 tutorial用于实现,但在我开始研究它之后,我不确定如何将输出格式化为段落。

我还看到了关于 DTCoreText library 的建议。但我没有看到很多关于它的信息。

有人可能会使用上述三个选项中的任何一个或他们自己的一个选项来抛出一个片段,说明如何在保留段落的同时将 html 解析为纯文本?

解决方案

根据 lxt 的建议,我调查了 DTCoreText。一旦我设法将它安装在我的应用程序中(绝对推荐 cocoa pod )。在我的 detailViewController 中使用 #import "DTCoreText.h" 很简单,然后将下面的行添加到 UITextView 中。

    NSDictionary *options = @{DTUseiOS6Attributes: [NSNumber numberWithBool:YES]};
    NSData *htmlData = [self.htmlString dataUsingEncoding:NSUTF8StringEncoding];
    NSAttributedString *stringArticle = [[NSAttributedString alloc] initWithHTMLData:htmlData optionsptions documentAttributes:NULL];
    self.newsDetailText.attributedText = stringArticle;

第一次构建失败,因为我没有包含 DTUseiOS6Attributes 行。第二次构建成功,详细 View 的格式完美。这是一个拳头时刻!再次感谢lxt的推荐!



Best Answer-推荐答案


我真诚地建议使用 DTCoreText 而不是编写自己的解析器。重新发明轮子并没有真正的好处,而且它也是一个广泛使用的库,拥有庞大的用户群。

我很惊讶你找不到关于它的信息,图书馆 has very good documentation available ,并且作者在 Twitter 上也非常活跃 (@cocoanetics)。

您可以使用提供的漂亮的 DTAttributedTextView 类来代替您的 UITextView。该库还提供了一个使用 initWithHTMLData:documentAttributes: 方法扩展 NSAttributedString 的类别。这将让您创建属性字符串并将其插入您的 View 。真的不超过几行代码。

关于iphone - 如何在保持段落格式的同时将 HTML 解析为纯文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17497969/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap