2009-10-19 7 views
3

Je suis en train de nettoyer certains HTML avec libtidy (langage C), le problème est:Comment utiliser libtidy avec tidyParseBuffer()?

Je veux construire un TidyDoc (une structure arborescente) avec tidyParseBuffer().

Je n'ai aucun problème avec tidyParseFile(); à propos de tidyParseBuffer(): Je suis sûr que j'ai lu le fichier correctement et que la structure TidyBuffer que je donne à tidyParseBuffer() est correctement remplie.

Des idées?

Voici le code:

//declaration 
tidyInput = malloc(sizeof(TidyBuffer)); 
tidyOutput = malloc(sizeof(TidyBuffer)); 
do { 
     len = fread(pbInputData, 1, nInputData, h->file); 
     tidyBufAttach(tidyInput, (void*)pbInputData, len); 
     tidyParseBuffer(h->doc, tidyInput); // doc is the TidyDoc 
} while (len >= nInputData); 
tidyOptSetBool(h->doc, TidyForceOutput, yes); 

tidySaveFile(handler->doc, "C://test.xhtml"); 

je l'ai fait simplifier le code.

+0

Pourriez-vous donner une indication du problème que vous rencontrez, avec un code source si possible? –

+0

Je ne sais pas comment mettre du code dans les commentaires, alors je vais essayer d'expliquer. C'est comme si la structure de TidyDoc était effacée à chaque appel de tidyParseBuffer .. peut-être que c'est le bon comportement de la fonction .. ne sais pas, va vérifier tidyParseStdin –

+0

Pourriez-vous mettre à jour la question avec le code? –

Répondre

1

Le problème provient du fait que vous essayez d'analyser le contenu d'un fichier en morceaux, en lisant chaque bloc dans un tampon et en appelant tidyParseBuffer() pour chaque segment.

Les tidyParseXxx() fonctions fonctionnent en analysant l'ensemble d'entrée en un seul appel, afin de faire ce que vous voulez, vous devriez jeter un oeil à TidyInputSource et tidyParseSource().

+0

merci, c'est une bonne idée –

+0

C'est un peu plus compliqué à mettre en place mais cela ressemble à la mise en œuvre de 'tidyParseFile()' utilise exactement ce mécanisme. –

Questions connexes