2 Stimmen

Warum führt das Überschreiben einer XML-Datei zu einem zusätzlichen End-Tag?

Ich erstelle eine Anwendung in C#, die einige Benutzereinstellungen in eine XML-Datei schreiben muss. Sie werden perfekt gelesen, aber beim Schreiben werden sie zurück ein zusätzliches Endtag erstellt, das das Programm nicht lesen kann.

XML-Datei:

   False
   1280
   720
   True
   2
   0
   0

Code das schreibt:

FileStream stream =
    new FileStream("configs/options.xml", FileMode.Open, FileAccess.ReadWrite);

XmlDocument doc = new XmlDocument();

doc.Load(stream);

stream.Seek(0, SeekOrigin.Begin);

doc.SelectSingleNode("/options/fullscreen").InnerText = fullscreen.ToString();
doc.SelectSingleNode("/options/vsync").InnerText = vsync.ToString();
doc.SelectSingleNode("/options/resolutionX").InnerText = resolutionX.ToString();
doc.SelectSingleNode("/options/resolutionY").InnerText = resolutionY.ToString();
doc.SelectSingleNode("/options/AA").InnerText = aa.ToString();
doc.SelectSingleNode("/options/musicvolume").InnerText = musicvolume.ToString();
doc.SelectSingleNode("/options/soundvolume").InnerText = soundvolume.ToString();

doc.Save(stream);
stream.Close();

Was ich bekomme:

   True
   1280
   720
   True
   4
   0
   0
/options>

3voto

Ry- Punkte 208020

Da Sie in denselben Stream schreiben, bleibt der Unterschied bestehen, wenn das geänderte XML kürzer ist als das Original. Sie können FileStream.SetLength verwenden, um das nach dem Speichern zu korrigieren:

doc.Save(stream);
stream.SetLength(stream.Position);
stream.Close();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X