Функция 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
И это объект после использования .clear ():
Не знаю почему, но объект теряет ссылку, если я использую функцию .clean (). Возможно, поэтому я не могу удалить значение соответствующего тега XML.
Простите, это буквальная ошибка. В моем коде это правильно. я
Ну, он становится нулевым узлом после вызова clear. В документах говорится о clear: Преобразует узел в нулевой узел; если раньше это не был нулевой узел, его тип и содержимое удаляются.
Что вам следует сделать, так это удалить первого дочернего элемента DBPathNode.
Я думал только о типе и содержании, а не о названии. Как мне убрать ребенка? С DBPathNode.removeChild (DBPathNode.firstChild ())?
@thuga: Спасибо, работает с removeChild. :)





Разве значение
nodeNameне должно быть"DBPATH", а не"DBPath"?