我正在尝试用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");
我确实简化了代码。
答案 0 :(得分:1)
问题源于这样一个事实:您正在尝试以块的形式解析文件的内容,将每个块读入缓冲区并为每个块调用tidyParseBuffer()
。
tidyParseXxx()
函数通过在一次调用中解析整个输入来运行,因此要执行您想要的操作,您应该查看TidyInputSource
和tidyParseSource()
。