есть вот такой xml
<?xml version='1.0'?>
<currentcounters>
<currentdeposit>0</currentdeposit>
<currentpaidorder>
<paidorder type="normal" >picture/noteCoin.png</paidorder>
<paidorder type="normal" >picture/noteCoin.png</paidorder>
</currentpaidorder>
</currentcounters>
нужно удалить последний чайлд у <currentpaidorder> , и делаю это таким кодом ...
QFile file("currentCounters.xml");
if (!file.open(QFile::ReadWrite | QFile::Text)) {
QMessageBox::warning(this, tr("Read"),
tr("Cannot read file %1:\n%2.")
.arg("config.xml")
.arg(file.errorString()));
return;
}
QByteArray currentCountersData = file.readAll();
if (!docCurrentCounters.setContent(currentCountersData, &errorStr, &errorLine,
&errorColumn)) {
QMessageBox::warning(0, QObject::tr("DOM Parser"),
QObject::tr("Parse error at line %1, "
"column %2:\n%3")
.arg(errorLine)
.arg(errorColumn)
.arg(errorStr));
return;
}
QDomElement root = docCurrentCounters.documentElement();
if (root.tagName() != "currentcounters");
return 0;
QDomNode counterNode = root.firstChild();
while (!counterNode.isNull()) {
if ( counterNode.nodeName() == "currentpaidorder"){
QDomNode removedNode = counterNode.lastChild();
counterNode.removeChild(removedNode);
}
counterNode = counterNode.nextSibling();
}
file.write(docCurrentCounters.toByteArray(4));
file.close();
преобразование в QByteArray требуется для других задачь, в последующем данные записуются не в файл ...
так вот ... после выполнения такого кода имеем такой xml
<?xml version='1.0'?>
<currentcounters>
<currentdeposit>0.5</currentdeposit>
<currentpaidorder>
<paidorder type="normal" >picture/noteCoin.png</paidorder>
</currentpaidorder>
</currentcounters>
oteCoin.png</paidorder>
</currentpaidorder>
</currentcounters>
то есть после послденего закрывающего тега какие то обрезки ... откуда ? ... что не так ?
перед write файл переоткрой с режимом QIODevice::Truncate или позови resize() .....
ТОЧНО!!! file.resize(0) перед file.write помогло .... Спасибо.