2009-10-19 2 views
3

libtidy (C 언어)로 일부 HTML을 정리하려고하는데 문제는 다음과 같습니다.libtidy를 tidyParseBuffer()와 함께 사용하는 방법은 무엇입니까?

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

가능한 경우 일부 소스 코드로 문제가 발생했음을 알려주실 수 있습니까? –

+0

코멘트에 코드를 삽입하는 방법을 모르므로 설명하겠습니다. tidyParseBuffer를 호출 할 때마다 TidyDoc 구조가 지워지는 것처럼 보입니다. 아마도 함수의 올바른 동작입니다. dunno, tidyParseStdin을 확인할 것입니다. –

+0

코드로 질문을 업데이트 할 수 있습니까? –

답변

1

문제는 파일의 내용을 청크로 분석하고 각 청크를 버퍼로 읽고 각 청크에 tidyParseBuffer()을 호출하는 데서 발생합니다.

tidyParseXxx() 함수는 한 번의 호출로 전체 입력을 구문 분석하여 작동하므로 원하는대로 수행하려면 TidyInputSourcetidyParseSource()을 사용해야합니다.

+0

감사합니다. 좋은 생각 인 것 같습니다. –

+0

설정이 좀 더 복잡하지만 구현과 비슷합니다. 'tidyParseFile()'은이 메커니즘을 정확하게 사용한다. –