2013-03-23 61 views
2

我使用QDomDocument来编写XML文档。
但在我的dom树中,有些节点是使用docA创建的,有些使用docB。是否有必要使用相同的QDomDocument创建的QDomElement来编写XML?

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?

回答

5

您应该避免这种情况,因为如果docB仍在使用时docA超出范围,那么事情会开始出错。我相信你提出的建议在技术上会起作用,直到这种情况发生,但图书馆似乎设计的目的是阻止它。

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

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

boolean参数控制是否进行深度复制。

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