我有 XML 文件
<root rootname="RName" otherstuff="temp">
<somechild childname="CName" otherstuff="temp">
</somechild>
</root>
RName
在上面的 XML中,我如何更新RN
和CName
使用CN
QT。我正在使用QDomDocument
但无法做必需的事情。
我有 XML 文件
<root rootname="RName" otherstuff="temp">
<somechild childname="CName" otherstuff="temp">
</somechild>
</root>
RName
在上面的 XML中,我如何更新RN
和CName
使用CN
QT。我正在使用QDomDocument
但无法做必需的事情。
如果您分享您如何使用 QDomDocument 以及究竟哪一部分是棘手的信息,这将有所帮助。但这里一般情况如何:
正在从文件系统中读取文件;
文件被解析为 QDomDocument;
文件内容正在修改;
正在将数据保存回文件。
在 Qt 代码中:
// Open file
QDomDocument doc("mydocument");
QFile file("mydocument.xml");
if (!file.open(QIODevice::ReadOnly)) {
qError("Cannot open the file");
return;
}
// Parse file
if (!doc.setContent(&file)) {
qError("Cannot parse the content");
file.close();
return;
}
file.close();
// Modify content
QDomNodeList roots = elementsByTagName("root");
if (roots.size() < 1) {
qError("Cannot find root");
return;
}
QDomElement root = roots.at(0).toElement();
root.setAttribute("rootname", "RN");
// Then do the same thing for somechild
...
// Save content back to the file
if (!file.open(QIODevice::Truncate | QIODevice::WriteOnly)) {
qError("Basically, now we lost content of a file");
return;
}
QByteArray xml = doc.toByteArray();
file.write(xml);
file.close();
请注意,在现实生活中的应用程序中,您需要将数据保存到另一个文件,确保保存成功,然后用副本替换原始文件。