c++ - 是否有必要让同一个QDomDocument创建的QDomElement来编写XML?

标签 c++ qt dom io tree

我使用QDomDocument来编写XML文档。
但在我的dom树中,一些节点是使用docA创建的,一些节点使用docB创建的。

QDomElement parentNode = docA.CreateElement("name");//created by docA
QDomElement childNode = docB.CreateElement("value");//created by docB
parentNode.appendChild(childNode);//in onr tree

并且:

QTextStream out(&file);
docA.save(out, Indent);//docA created the root QDomElement
                       //write the file using docA      

那么是否可以像这样将整个树写入 XML 中?

最佳答案

您应该避免这种情况,因为当 docA 超出范围且 docB 仍在使用时,事情就会开始出错。我相信您的提议在技术上将有效,直到这种情况发生,但该库似乎旨在阻止它。

但是,有一个函数 QDomDocument::importNode() 可能正是您想要的。你可以这样做:

docAParent.appendChild( docA.importNode( docBNode, true ) );

bool 参数控制是否进行深层复制。

请参阅文档:http://qt-project.org/doc/qt-4.8/qdomdocument.html#importNode

关于c++ - 是否有必要让同一个QDomDocument创建的QDomElement来编写XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15585406/

相关文章:

c++ - QThread:线程仍在运行时被销毁,QMutex 被销毁

javascript - 在 JavaScript 中,手动控制事件监听器的顺序

c++ - 不可调用对象的示例赋值运算符?

C++ 错误 : invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]

c++ - 如何将所有 <p> 标签写入文本文件

python - Qt 的 Squish 替代品

javascript - 将 .each() 绑定(bind)到动态添加的元素

javascript - 如何更改javascript中动态创建的按钮的值

c++ - 尝试验证日期时 undefined reference

c++ - 在 C++ 中使用运算符重载添加复数