2010-09-17 62 views
2

我想从HTML页面中刮取一些内容。我使用libxml2和htmlReadMemory来获取xmlDocPtr。 HTML很简单,但它有一个问题。基本上如下:libXML宽松的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?

感谢

回答

4

什么是您使用的是解析准确通话?我建议结合这些选项,如果你不希望任何错误/警告:

HTML_PARSE_RECOVER|HTML_PARSE_NOERROR|HTML_PARSE_NOWARNING 
+0

我这样做:theDoc = htmlReadMemory([INDATA字节],[INDATA长度],NULL,ENC,HTML_PARSE_RECOVER | HTML_PARSE_NOWARNING | HTML_PARSE_NOBLANKS); – 2010-09-17 19:29:41

+0

即使HTML中存在错误,使用HTML_PARSE_NOERROR仍会解析文档吗? – 2010-09-17 19:30:42

+0

其实,我把HTML_PARSE_NOERROR,现在它的工作。感谢那! – 2010-09-17 19:35:52