Хорошая печать с libxml2? - PullRequest
1 голос
/ 29 мая 2019

Использование libxml2.Я могу красиво напечатать XML в файл, используя xmlSaveFormatFileEnc().Но есть ли способ сделать то же самое в текстовой строке или потоке?

Я бы хотел не записывать XML в файл и не читать его обратно, просто чтобы получить версию для печатиXML.

Для записи, что я сейчас делаю, это следующее:

xmlInitParser();
xmlKeepBlanksDefault(0);
xmlLineNumbersDefault(1);
xmlThrDefIndentTreeOutput(1);
xmlThrDefTreeIndentString("    ");

std::string content = "....."; // do something here to get the XML
xmlDoc * doc = xmlParseDoc((xmlChar*)content.c_str());

xmlSaveFormatFileEnc("output.xml", doc, "utf-8", 1); // pretty print

1 Ответ

0 голосов
/ 29 мая 2019

украдено у здесь :

xmlBufferPtr buf;
/* Create a new XML buffer, to which the XML document will be
 * written */
buf = xmlBufferCreate();
if (buf == NULL) {
    std::cerr << "testXmlwriterMemory: Error creating the xml buffer" << std::endl;
    return;
}

/* Create a new XmlWriter for memory, with no compression.
 * Remark: there is no compression for this kind of xmlTextWriter */
writer = xmlNewTextWriterMemory(buf, 0);
if (writer == NULL) {
    std::cerr << "testXmlwriterMemory: Error creating the xml writer" << std::endl;
    return;
}

А потом, после того как вы записали в буфер:

std::cout << buf->content << std::endl
...