克隆rapidxml::xml_document

发布于 2024-09-14 17:17:15 字数 85 浏览 8 评论 0原文

如何获取 RapidXML xml_document 的完整副本?

有一个clone_node函数;如何使用 to 创建现有文档的完整副本?

How do I get a complete copy of a RapidXML xml_document?

There is a clone_node function; how to use to to create a complete copy of an existing document?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤独岁月 2024-09-21 17:17:15

正如您已经猜到的,有函数 clone_node 方法。来自在线帮助:

xml_node*clone_node(const xml_node*源,xml_node*结果=0);

克隆 xml_node 及其子节点和属性的层次结构。节点和属性是从此内存池中分配的。名称和值不会被克隆,而是在克隆和源之间共享。结果节点可以选择指定为第二个参数,在这种情况下,其内容将被克隆的源节点替换。当您想要克隆整个文档时,这非常有用。

FreshCode 提出的方法非常简单,但为您可能想要的“toString & parseBack”添加了不必要的开销避免。

as you already guessed there is the function clone_node method. From the online help:

xml_node* clone_node(const xml_node< Ch > *source, xml_node< Ch > *result=0);

Clones an xml_node and its hierarchy of child nodes and attributes. Nodes and attributes are allocated from this memory pool. Names and values are not cloned, they are shared between the clone and the source. Result node can be optionally specified as a second parameter, in which case its contents will be replaced with cloned source node. This is useful when you want to clone entire document.

The approach proposed by FreshCode is quite simple, but adds an unnecessary overhead to "toString & parseBack" that you may want to avoid.

£噩梦荏苒 2024-09-21 17:17:15

我确信有一种更干净、基于树的方法,但我用以下方法解决了它,其中 str 是另一个文档的 xml 输出:

xml_document<> doc;
doc.parse<0>(doc.allocate_string(str));

I'm sure there's a cleaner, tree-based approach, but I solved it with the following, where str is the xml output from another doc:

xml_document<> doc;
doc.parse<0>(doc.allocate_string(str));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文