2010-09-17 88 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