gpt4 book ai didi

c++ - QDomNode.clear() 不删除 xml 标签的值

转载 作者:行者123 更新时间:2023-11-30 03:23:40 24 4
gpt4 key购买 nike

QDomNode.clear() 函数应该删除相应的 XML 标记的值。我正在使用 Qt 4.7。

这里是 XML

<dbLoginData>
<DB_DRIVER>
QSQLITE
</DB_DRIVER>
<DBPATH>
/DB/Part.db
</DBPATH>
</dbLoginData>

现在,我想删除 DBPATH 的文本值。

QFile xmlFile(fileName);
xmlFile.open(QIODevice::ReadWrite);

QByteArray xmlData(xmlFile.readAll());
QDomDocument doc;
doc.setContent(xmlData);

QString nodeName = "DBPATH";
QDomElement root = doc.documentElement();
//root.firstChildElement(nodeName).setNodeValue("abv");
QDomElement DBPathNode= root.firstChildElement(nodeName);

DBPathNode.clear();
xmlFile.resize(0);
QTextStream stream;
stream.setDevice(&xmlFile);
doc.save(stream, 4);
xmlFile.close();

但是保存文件后,它并没有改变任何东西。

编辑:

当我使用 .clean() 函数时,有一种好奇。

这是对象,在我清除 XML 标记之前

QDomElement before using clear()

这是使用 .clear() 后的对象:

After using .clear() at QDomElement

我不知道为什么,但如果我使用 .clean() 函数,对象就会丢失引用。这可能就是我无法删除相应 XML 标记的值的原因

最佳答案

您可以使用 removeChild 删除文本节点:

QDomElement dbPathNode = root.firstChildElement(nodeName);
dbPathNode.removeChild(dbPathNode.firstChild());

关于c++ - QDomNode.clear() 不删除 xml 标签的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50230853/

24 4 0