我的问题是我想创建xml树并获得一个简单的字符串对象(甚至是char *)。 我无法将xml保存到文件中。
所以在输入中我有xmlDocPtr和完整的xml树,并希望得到包含xml但不使用文件的字符串。
请注意。
答案 0 :(得分:10)
使用xmlDocDumpMemory或其任何表兄弟。用法:
void xml_to_string(xmlDocPtr doc, std::string &out)
{
xmlChar *s;
int size;
xmlDocDumpMemory(doc, &s, &size);
if (s == NULL)
throw std::bad_alloc();
try {
out = (char *)s;
} catch (...) {
xmlFree(s);
throw;
}
xmlFree(s);
}
答案 1 :(得分:1)
我刚才写的东西。希望它有所帮助......
xmlDocPtr pDoc = ... // your xml docuemnt
xmlCharPtr psOutput;
int iSize;
xmlDocDumpFormatMemoryEnc(pDoc, &psOutput, &iSize, "UTF-8", 1);
// psOutput should point to the string.
// Don't forget to free the memory.
xmlFree(psOutput);
答案 2 :(得分:0)
如果你使用xmlDocDumpMemory()要小心。在使用xmlDocDumpMemory()之后,在最后调用xmlCleanupParser()。似乎xmlDocDumpMemory()在内部使用它。
答案 3 :(得分:-1)
我无法得到您想要的内容,但在更改节点值后,您可以使用xmlDoc转储保存easily。