2
私はHTML文字列を解析して再度書き出しようとしています(簡潔にするため、私は実行したい変換を省略しています)。`htmlDocPtr`を文字列に書く
#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;
}
(私はほぼ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