Programmgesteuertes Bearbeiten von xlsx XML führt dazu, dass es beschädigt wird

Also erstelle ich in Qt 5.6 ein Qt-Programm, das Excel-fileen liest und schreibt (mit Qt Xlsx 0.3). Es gibt eine drawing.xml-file, die ich bearbeiten möchte, deshalb verwende ich ein QDomDocument. Ich ändere nur eine Sache, von:

<a:p> <a:pPr rtl="0"/> <a:r> <a:rPr b="0" baseline="0" i="0" lang="en-GB" sz="1100"> <a:effectLst/> <a:latin typeface="+mn-lt"/> <a:ea typeface="+mn-ea"/> <a:cs typeface="+mn-cs"/> </a:rPr> <a:t>J1: 0 </a:t> </a:r> </a:p> 

zu diesem:

  <a:p> <a:pPr rtl="0"/> <a:r> <a:rPr b="0" baseline="0" i="0" lang="en-GB" sz="1100"> <a:effectLst/> <a:latin typeface="+mn-lt"/> <a:ea typeface="+mn-ea"/> <a:cs typeface="+mn-cs"/> </a:rPr> <a:t>TESTING</a:t> </a:r> </a:p> 

Ich legte das wieder in den Zeichnungsordner und zippte die xlsx-file, aber als ich die xlsx-file öffnete, war die Zeichnung beschädigt und wurde entfernt. Also habe ich einen Diffchecker verwendet, um sicherzustellen, dass alles andere in diesen XML-fileen identisch ist, und bemerkte, dass Qt auch eine Änderung daran vorgenommen hat.

Von:

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> 

zu:

 <?xml version='1.0' encoding='UTF-8' standalone='yes'?> 

Gut, was auch immer, ich habe die einfachen Anführungszeichen in Anführungszeichen gesetzt, und jetzt zeigt der Diff-Checker keine Unterschiede mehr. Ich lege diese Zeichnung zurück in die Excel-file und ziehe sie hoch, aber wenn ich die xlsx-file öffne, wird die Zeichnung trotzdem entfernt, weil sie beschädigt ist!

Ich dachte, es könnte ein Problem mit der Bearbeitung der XML-file selbst geben, also habe ich versucht, die file drawing.xml von Hand zu bearbeiten. Ich habe die gleiche Änderung zuvor gezeigt (nur die "TESTING" und links die Anführungszeichen) und wenn ich es wieder in eine XLSX-file zip ist es keine Probleme!

Ich bin sehr verwirrt, was dieses Problem verursacht, weil der Diff-Checker keine Unterschiede zwischen den XML-fileen zeigt, aber wenn ich versuche, sie in xlsx-fileen zu zippen, ist derjenige, der von Qt programmgesteuert erstellt wurde, beschädigt, während die Hand editiert ist fein. Was könnte die Ursache für dieses Problem sein?

EDIT: Hier ist der Qt-Code, den ich ausführen:

 QDomDocument doc; QString temp; int y, j; QFile xml("C:/Users/dillo/Desktop/drawing2.xml"); if (!xml.open(QIODevice::ReadOnly)) { qDebug() << "file didnt open"; } if (!doc.setContent(&xml, false, &temp, &y, &j)) { qDebug() << "Failed"; qDebug() << temp << " " << y << " " << j; } QDomNodeList items = doc.elementsByTagName("a:r"); QDomNode node = items.at(1); QDomNodeList children = node.childNodes(); QDomElement newNodeTag = doc.createElement(QString("a:t")); QDomText newNodeText = doc.createTextNode(QString("TESTING")); newNodeTag.appendChild(newNodeText); node.replaceChild(newNodeTag, children.at(1)); xml.close(); xml.open(QIODevice::WriteOnly); QTextStream stream(&xml); stream << doc.toString(); xml.close(); 

Solutions Collecting From Web of "Programmgesteuertes Bearbeiten von xlsx XML führt dazu, dass es beschädigt wird"