我试图在iphone中解析一些不复杂的RSS html内容。
所以我不需要繁重的HTML解析器。
我在这里搜索过并找到了这两个:
https://github.com/topfunky/hpple
https://github.com/zootreeves/Objective-C-HMTL-Parser
两者都很简单易用。但我想他们的问题出乎我的目的。
对于TFHpple,这很好,但是对于每个元素,它都没有完整的HTML<>与自己。例如,element没有这个完整的标记字符串。我需要这个完整的标记字符串,因为我需要从整个HTML字符串中删除它。如果元素有这个,我会更方便。
对于zootreeves HTML-Parser,它也很简单。它有每个元素的完整标记字符串。我很高兴。然而,它似乎是一个伟大的记忆消费者。我监视它。如果我尝试解析大量的HTML片段(比如1000),那么它将花费并保持占用的内存就像40MB。它不适用于ios设备。我想,zootreeves使用纯C代码和链表来组织HTML的树结构。它使用纯malloc和free用于内存。我不知道这是否会影响ios内存。
那么,对于我来说,任何人都可以为iOs推荐一款最先进,更快速,更简单的HTML解析器吗?
由于
答案 0 :(得分:0)
我会使用libxml2。它不仅仅适用于xml;它也有一个HTML解析器。它速度快,内存不足,可在iOS上使用。唯一的缺点是它是一个基于C的API,但对于所有这些,它并不是非常难以使用。
<强>更新强>
回应下面的第一条评论:已经有一段时间了,所以我不确定,但我不这么认为。你得到的是一个包含大量文档结构信息的数据结构,每个标签都有一个属性/值对列表。原始的html字符串无处存储(我认为这被认为是多余的,不是为了节省内存)。
然而,您似乎并不真的需要它来做您想做的事情。在我看来,您正在使用解析器中的信息来修改原始字符串,删除HTML标记。您要做的是使用解析树中的信息重建文档,当您执行此操作时,请省略您想要省略的标记。