首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用PUGIXML多次保存大型XML文件需要花费大量时间。

使用PUGIXML多次保存大型XML文件需要花费大量时间。
EN

Stack Overflow用户
提问于 2013-03-01 23:46:42
回答 1查看 791关注 0票数 2

我有一个使用PUGIXML加载和修改的65 PUGIXML文件。问题是,我需要保持它的更新和保存到磁盘,以便其他文件可以访问。我不想实现数据库,那么有什么方法可以让我做修改,只保存这些修改,而不是将整个文档转储到文件中呢?我注意到每次保存xml文件时都有3-4秒的延迟。

EN

回答 1

Stack Overflow用户

发布于 2015-06-16 07:55:38

这是个老问题。但不管怎样,让我回答。pugixml具有通过write接口保存数据的模式。这有效地解决了必须转储整个文件的问题,因为您可以将数据块成小块并写入文件。

来自文档

这是一个具有单个函数的简单接口,在输出过程中会多次调用该接口,输入是大量的文档数据: 类xml_writer { public: virtual (constvoid* data,size_t size) = 0;};xml_document::save(xml_writer& xml_document::save,const char_t* indent = "\t",无符号int标志= format_default,xml_encoding编码= encoding_auto); ..。 写函数是用相对较大的块调用的(大小通常是几千字节,除了最后一个可能很小的块),因此在实现中通常不需要额外的缓冲。

还有一种解决这个问题的方法:一次保存一个子树。再一次,来自文档

为了保存单个子树,提供了以下功能:

代码语言:javascript
运行
复制
void xml_node::print(std::ostream& os, const char_t* indent = "\t", unsigned int flags = format_default, xml_encoding encoding = encoding_auto, unsigned int depth = 0) const;
void xml_node::print(std::wostream& os, const char_t* indent = "\t", unsigned int flags = format_default, unsigned int depth = 0) const;
void xml_node::print(xml_writer& writer, const char_t* indent = "\t", unsigned int flags = format_default, xml_encoding encoding = encoding_auto, unsigned int depth = 0) const;

这些函数具有与相应的xml_document::save函数相同的参数,并允许您将子树保存到C++ IOstream或实现xml_writer接口的任何对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15168817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档