替换现有的xml标记值在xml文件中发生意外更改

时间:2019-06-03 13:40:07

标签: xml qt c++11

我要替换xml标记的值。我可以使用QDom替换该值,但是在更改之后,我的xml文件中发生了更改。

我正在使用qt,并且尝试使用“ QDOM”替换标记值并使用“ QTextStream”保存它。

QFile myFile(QLatin1String(my_FILE));
if (liceFile.open(QIODevice::ReadWrite)) {
    QDomDocument doc;
    doc.setContent(&myFile);
    QDomElement parentEle = doc.firstChildElement("Root");
    QDomNode myValue= parentEle.firstChildElement("Mytag");
    myValue.firstChild().setNodeValue("Hey");
    QTextStream stream(&myFile);
    doc.save(stream, 4);
    myFile.close();

xml文件:

"<Root>
   <Mytag>Hello</Mytag>
   <User></User>
   <Pass>121</Pass>"

如果我替换“ Mytag”的值。     替换后输出。

"<Root>
  <Mytag>Hey</Mytag>
  <User/>
  <Pass>121</Pass>" 

我不明白为什么标记从<User>Mr<User/>更改为<User/>

1 个答案:

答案 0 :(得分:0)

保存XML文档时,整个文档将被写入输出文件。 因此,QDomDocument将保存<User></User>,这是一个具有默认空元素样式的空元素,即<User/>

希望它对您有帮助。