2009-10-19 71 views
3

我想用libtidy(C语言)来清理一些HTML,问题是:如何与tidyParseBuffer()一起使用libtidy?

我想用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

您是否可以指出您遇到的问题,如果可能,使用一些源代码? – 2009-10-19 15:03:09

+0

我不知道如何将代码放入评论中,所以我会尽力解释。 这就像每次调用tidyParseBuffer都会清除TidyDoc结构..也许这是该函数的正确行为..不知道,要检查tidyParseStdin – 2009-10-19 15:19:16

+0

你能用代码更新问题吗? – 2009-10-19 15:22:22

回答

1

问题源于这样一个事实,即您试图以块分析文件的内容,将每个块读入缓冲区并对每个块调用tidyParseBuffer()

tidyParseXxx()功能由单一的通话解析整个输入操作,所以做你想做的,你应该看看TidyInputSourcetidyParseSource()什么。

+0

谢谢!看起来这是个好主意。 – 2009-10-19 15:34:22

+0

设置起来有点复杂,但听起来像是执行'tidyParseFile()'完全使用这种机制。 – 2009-10-19 15:36:49

相关问题