如何在tidyParseBuffer()中使用libtidy?

时间:2009-10-19 14:41:22

标签: html c stream tidy

我正在尝试用libtidy(C语言)清理一些HTML,问题是:

我想用tidyParseBuffer()构建一个TidyDoc(树状结构)。

我对tidyParseFile()没有任何问题;关于tidyParseBuffer():我确定我正确地读取了文件,并且我给tidyParseBuffer()的TidyBuffer结构被正确填充。

有什么想法吗?

这是代码:

    //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");

我确实简化了代码。

1 个答案:

答案 0 :(得分:1)

问题源于这样一个事实:您正在尝试以块的形式解析文件的内容,将每个块读入缓冲区并为每个块调用tidyParseBuffer()

tidyParseXxx()函数通过在一次调用中解析整个输入来运行,因此要执行您想要的操作,您应该查看TidyInputSourcetidyParseSource()