【问题标题】:libXML relaxed HTML parsinglibXML 轻松的 HTML 解析
【发布时间】:2010-09-17 19:20:54
【问题描述】:

我正在尝试从 HTML 页面中抓取一些内容。我正在使用 libxml2 和 htmlReadMemory 来获取 xmlDocPtr。 HTML 很简单,但它有一个问题。基本上是这样的:

<tr><td><tr><td>Some content</td></tr></td></tr>

libxml 不喜欢嵌套的 tr、tds。它一直给我以下错误:

HTML parser error : Unexpected end tag : td
      </TD>
           ^
HTML parser error : Unexpected end tag : tr
    </TR>

我正在使用以下选项:HTML_PARSE_RECOVER。

在这一点上,我所做的任何事情都不允许 libxml 解析 HTML。我无法更改 HTML,因为我无权访问它。

任何人都知道如何让 libxml 解析这种 HTML 吗?

谢谢

【问题讨论】:

    标签: iphone libxml2


    【解决方案1】:

    您用来解析的确切调用是什么?如果您不希望出现任何错误/警告,我建议您结合使用这些选项:

    HTML_PARSE_RECOVER|HTML_PARSE_NOERROR|HTML_PARSE_NOWARNING
    

    【讨论】:

    • 我这样做:theDoc = htmlReadMemory([inData bytes], [inData length], NULL, enc, HTML_PARSE_RECOVER | HTML_PARSE_NOWARNING | HTML_PARSE_NOBLANKS);
    • 即使 HTML 中有错误,使用 HTML_PARSE_NOERROR 是否仍然解析文档?
    • 实际上,我输入了 HTML_PARSE_NOERROR,现在它可以工作了。谢谢!
    • 我相信 libxml 在大多数情况下仍能正确解析文档,但这可能取决于它的损坏程度。
    猜你喜欢
    • 2011-11-10
    • 2011-04-05
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多