【问题标题】:Parsing dirty HTML on iPhone在 iPhone 上解析脏 HTML
【发布时间】:2010-01-09 00:56:57
【问题描述】:

我已经为一个好的解决方案搜索了很长时间,但我找不到任何适合我需要的东西......

我想解析一个 HTML 文件并在表格中显示它的内容。一切就像编写另一个 RSS 提要阅读器一样。通过直接使用 NSXMLParser 或 TouchXML 或 libxml 或其他一些 XML 解析器来解析有效的 XML 文件是简单而直接的......但这些框架要么只适用于 XML 和/或不适用于非整洁的 HTML。该网站由 div 组成,包括包含图像或段落的链接,包括链接和图像等......只是一个普通的网站。在这种情况下,使用 libxml 似乎太复杂了。

有人在解析脏 HTML 页面方面有更多经验吗?您使用了哪个(免费)库/框架?我有一种感觉,我在这里错过了一些明显的东西。解析 HTML 文件应该没那么难吧?

希望你能给我指明正确的方向!

【问题讨论】:

  • 你需要从任何来源解析任何 HTML 吗?或者你正在寻找更具体的东西?例如,您是否需要创建一棵完整的 DOM 树,或者是否足以扫描文件中的表单元素?
  • 我需要扫描某个来源的特定部分,但我无法控制内容的结构。这意味着我无法控制内容的顺序,有时结构良好,有时凌乱

标签: iphone html cocoa cocoa-touch parsing


【解决方案1】:

如果您需要解析大部分页面,尝试按照 Anurag 使用 libXML2 是个好主意。

如果您只需要文件中的一小段数据,最好使用 RegEx 表达式来读取数据 - 还有一个内置的 regex 库,您可以使用包装器 RegExKitLite 来访问它。

【讨论】:

  • 嗯...似乎我必须将 RegEx 与 libXML 一起使用。感谢您提供 RegExKit 的链接!
【解决方案2】:

WebKit 应该处理脏 HTML,并允许您使用“Page”和“Frame”类访问 DOM 树。这些包含按 ID 查找元素的函数等。

【讨论】:

  • 我刚刚看过...不幸的是,WebKit 是 iPhone OS 上的私有框架,所以这会阻止我进入应用商店:(
  • UIWebView 是应用商店认证的嵌入式 WebKit 版本。
【解决方案3】:

查看同样在 iPhone 上的 libxml2 库,它带有一个内置的HTML parser。声称可以处理真实世界 HTML:

此模块实现了一个 HTML 4.0 非验证解析器,其 API 与 XML 解析器兼容。它应该能够解析“真实世界”的 HTML,即使从规范的角度来看严重破坏。

【讨论】:

    【解决方案4】:

    前段时间我不得不这样做。最终,我最终使用 HTML Tidy 清理 HTML,然后使用 TouchXML 解析它。

    当我这样做时,HTML Tidy 文档不是很清楚(恕我直言),所以我不得不四处挖掘以了解它实际上是如何工作的。如果现在没有太多时间,但如果你愿意,我可以查看我想出的代码。

    可以在此处找到 HTML Tidy 的源代码(以及更多内容)。 http://tidy.sourceforge.net/

    【讨论】:

      【解决方案5】:

      我的经验为零,但是……你不能使用 WebKit 的解析器吗?我猜它应该暴露某种 DOM 而不必渲染页面。

      【讨论】:

      • 不。您不能直接在 iphone 上包含 webkit。只有 UIWebView,它不会暴露任何东西。
      猜你喜欢
      • 1970-01-01
      • 2011-02-21
      • 2010-09-29
      • 2011-09-17
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 2011-09-19
      • 1970-01-01
      相关资源
      最近更新 更多