2
HTML 문자열을 파싱하고 다시 작성하려고합니다 (간결하게하기 위해 수행하려는 변환을 생략했습니다).`htmlDocPtr`을 String으로 씁니다.
#include <iostream>
#include <libxml/HTMLparser.h>
static const char *html = "<!DOCTYPE html><html><head></head><body><div></div></body></html>";
int main(int argc, const char * argv[]) {
xmlChar *buff;
int buffersize;
htmlDocPtr doc = htmlReadMemory(html, (unsigned)strlen(html), "noname.html", NULL, 0);
xmlDocDumpFormatMemory(doc, &buff, &buffersize, 1);
printf("%s", (char *) buff);
xmlFree(buff);
xmlFreeDoc(doc);
return 0;
}
(I 거의 100 % 록에서 C++ 땅 - 어떤 outlaying 오류를 용서하시기 바랍니다)
이 모든 작업 (그에서 밖으로 오류하지 않습니다)하지만, XML 등 xmlDocDumpFormatMemory
취급 트리 및 그에 따라 출력 :
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE html>
<html>
<head/>
<body>
<div/>
</body>
</html>
위에서 알 수 있듯이 doctype 위에 XML 선언이 추가되었으며 빈 태그는 자동으로 닫힙니다. 내가 말할 수있는 한, htmlDocDumpFormatMemory
은 없습니다 - 사용할 수있는 옵션이나 대체 기능이 있습니까?
유사한 근무 마약 중독 ** ** 매력, 그리고 완전히 다른 질문이 될 내 공백을 보존! –
'XML_SAVE_AS_HTML'과'XML_SAVE_XHTML'과 같은 [유용한 옵션] (http://www.xmlsoft.org/html/libxml-xmlsave.html#xmlSaveOption)도 있습니다. – nwellnhof