void XMLNode::GetDoc(std::string& out_xml_str, bool user_friendly) const { out_xml_str.resize(0); if (!node_) return; xmlDocPtr doc = node_->doc; if (doc == NULL) return; xmlOutputBufferPtr buf = xmlOutputBufferCreateIO(&write_to_string,&close_string,&out_xml_str,NULL); if(buf == NULL) return; /* xmlChar *buf = NULL; int bufsize = 0; if (user_friendly) xmlDocDumpFormatMemory(doc, &buf, &bufsize, 1); else xmlDocDumpMemory(doc, &buf, &bufsize); if (buf) { out_xml_str = (char*)buf; xmlFree(buf); } */ // Note xmlSaveFormatFileTo/xmlSaveFileTo call xmlOutputBufferClose if (user_friendly) xmlSaveFormatFileTo(buf, doc, (const char*)(doc->encoding), 1); else xmlSaveFileTo(buf, doc, (const char*)(doc->encoding)); }
int OutputBuffer::writeDocument(xmlDocPtr doc) { return xmlSaveFileTo(*this, doc, "utf-8"); }