我需要在我的项目中做类似的事情,但我根本无法访问父文档。我只是想返回一个 QDomNode 并将其添加到调用方法中的父树中。我正在从 libxml2 迁移并更改此行为需要对代码进行大量重新设计。所以上述解决方案对我不起作用。
我通过创建一个临时 QDomDocument 来解决它,然后使用它创建子树。回到调用方法,我已经将它导入到父文档中。这是一个例子:
#include <QtXml>
#include <iostream>
using namespace std;
QDomNode TestTree(void) {
QDomDocument doc("testtree");
QDomElement testtree=doc.createElement("testing");
testtree.setAttribute("test","1");
doc.appendChild(testtree);
QDomElement testchild1 = doc.createElement("testje");
testtree.appendChild(testchild1);
QDomElement testchild2 = doc.createElement("testje");
testtree.appendChild(testchild2);
return testtree;
}
int main (int argc, char **argv) {
QDomDocument doc("MyML");
QDomElement root = doc.createElement("MyML");
doc.appendChild(root);
QDomElement tag = doc.createElement("Greeting");
root.appendChild(tag);
QDomText t = doc.createTextNode("Hello World");
tag.appendChild(t);
QDomNode testtree = TestTree();
QDomNode testtree_copy=doc.importNode(testtree,true);
root.appendChild(testtree_copy);
QString xml = doc.toString();
cout << qPrintable(xml) << endl;
}