1. 功能
将A.xml
文件中的copyNode
节点全部复制到B.xml
中的testRoot
节点。
2. 代码
c
#include <QDomDocument>
#include <QFile>
#include <QIODevice>
#include <QtXml>
void copyNodeXml()
{
// 源文件DOM
QDomDocument ADoc;
// 加载源文件
QFile fileA("A.xml");
if (!fileA.open(QIODevice::ReadOnly)) {
// 错误处理
}
if (!ADoc.setContent(&fileA)) {
// 错误处理
}
fileA.close();
/************************************************************/
//目的DOM
QDomDocument BDoc;
//目的文件
QFile fileB("B.xml");
if(!fileB.open(QFile::WriteOnly | QFile::Truncate)){
// 错误处理
}
/************************************************************/
//创建XML头部格式
QDomProcessingInstruction instruction;
instruction = BDoc.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"utf-8\"");
BDoc.appendChild(instruction);
//添加根节点
QDomElement root = BDoc.createElement("testRoot");
BDoc.appendChild(root);
/************************************************************/
//开始复制
QDomNode methodOriginal = ADoc.elementsByTagName("copyNode").at(0);
QDomNode newNode = methodOriginal.cloneNode(true); //递归复制
root.appendChild(newNode);
/************************************************************/
//保存
QTextStream out_stream(&fileB);
BDoc.save(out_stream, 4);
fileB.close();
}