在pugixml 中,xml_document 和xml_node 没有直接将xml保存为字符串的函数,可以通过重写writer实现。代码如下:
struct xml_string_writer :public pugi::xml_writer
{
string xml;
void write(const void* data, size_t size)
{
char* pXML = new char[size + 1];
memset(pXML, 0, size + 1);
memcpy(pXML, data, size);
xml += string(pXML);
delete[] pXML;
}
xml_string_writer()
{
xml = "";
}
};
int main()
{
pugi::xml_document doc;
doc.load_string("<users><name>Jack</name><age>12</age></users>");
pugi::xml_node users = doc.child("users");
//doc.save(std::cout);
//users.print(std::cout);
xml_string_writer writer;
users.print(writer);
cout << writer.xml << endl;
return 0;
}