2009-10-19 72 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

相關問題