pugixml使用中发现,没有直接的方法把数据输出到std::string.
看了以下文档,原来也很简单。
定义结构体
struct xml_string_writer : pugi::xml_writer
{
std::string result;
virtual void write(const void* data, size_t size)
{
result += std::string(static_cast(data), size);
}
};
输出内容
int genshowxml(string &xmlstring,string rootkey,string key, vector &v)
{
pugi::xml_document doc;
pugi::xml_node decl = doc.prepend_child(pugi::node_declaration);
decl.append_attribute("version") = "1.0";
decl.append_attribute("encoding") = "UTF-8";
decl.append_attribute("standalone") = "no";
//[code_modify_add
// add node with some name
pugi::xml_node root = doc.append_child("root");
pugi::xml_node node = root.append_child(rootkey.c_str());
// add description node with text child
vector::iterator it;
for(it=v.begin();it!=v.end();++it)
{
pugi::xml_node descr = node.append_child(key.c_str());
string tmp = *it;
descr.append_child(pugi::node_pcdata).set_value(tmp.c_str());
}
xml_string_writer writer;
doc.save(writer);
xmlstring = writer.result;
//]
return 0;
}
目前不处理格式和编码问题。
阅读(7764) | 评论(0) | 转发(1) |