2010-09-17 7 views
2

J'essaie de récupérer du contenu à partir d'une page HTML. J'utilise libxml2 et htmlReadMemory pour obtenir un xmlDocPtr. Le HTML est simple, mais il a un problème. Il est fondamentalement le suivant:libXML analyse HTML détendue

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

libxml n'aime pas les tr, tds imbriqués. Il continue à me donner l'erreur suivante:

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

J'utilise l'option suivante: HTML_PARSE_RECOVER.

À ce stade, rien de ce que je fais ne permet à libxml d'analyser le code HTML à cause de cela. Je ne peux pas changer le HTML parce que je n'y ai pas accès. Tout le monde a des indices sur la façon dont je peux obtenir libxml pour analyser ce type de code HTML?

Merci

Répondre

4

Quel est l'appel exact que vous utilisez pour analyser? Je vous suggère de combiner ces options si vous ne voulez pas d'erreurs/avertissements:

HTML_PARSE_RECOVER|HTML_PARSE_NOERROR|HTML_PARSE_NOWARNING 
+0

-je faire ceci: thedoc = htmlReadMemory ([InData octets], [longueur InData], NULL, enc, HTML_PARSE_RECOVER | HTML_PARSE_NOWARNING | HTML_PARSE_NOBLANKS); –

+0

L'utilisation de HTML_PARSE_NOERROR analyse-t-elle toujours le document même s'il y a des erreurs dans le code HTML? –

+0

En fait, j'ai mis en HTML_PARSE_NOERROR et maintenant ça marche. Merci pour ça! –