Frage

Der Versuch, ein XmlDocument zu Datei serialisiert. Die XmlDocument ist ziemlich groß; jedoch im Debugger kann ich sehen, dass die InnerXml Eigenschaft alle XML-Blob in sich hat -. es ist nicht dort abgeschnitten

Hier ist der Code, der meine XmlDocument-Objekt-Datei schreibt:

// Write that string to a file.
var fileStream = new FileStream("AdditionalData.xml", FileMode.OpenOrCreate, FileAccess.Write);
xmlDocument.WriteTo(new XmlTextWriter(fileStream, Encoding.UTF8) {Formatting = Formatting.Indented});
fileStream.Close();

Die Datei, die die hier nur produziert schreibt wie 5760 auf Linie aus - es ist tatsächlich in der Mitte eines Etiketts abgeschnitten!

Wer irgendwelche Ideen, warum dies hier gestutzt würde?

Update: Ich fand die Ursache des Problems. Ich war nicht das Schließen des XML-Text Writer, bevor Sie den Datei-Stream zu schließen! D'oh!

War es hilfreich?

Lösung

Die XmlTextWriter wurde nicht richtig geschlossen. Woops!

Andere Tipps

Sie können versuchen, den Strom zu spülen vor dem Schließen. Wenn Autoflush wahr ist, ich denke, es auf Schließen gespülten gets () sowieso, aber es könnte sich lohnen, ein Schuss:

// Write that string to a file. 
var fileStream = new FileStream("AdditionalData.xml", FileMode.OpenOrCreate, FileAccess.Write); 
xmlDocument.WriteTo(new XmlTextWriter(fileStream, Encoding.UTF8) {Formatting = Formatting.Indented}); 
fileStream.Flush();
fileStream.Close(); 

Es ist Art und Weise Art und Weise Art und Weise ..., nachdem die ursprüngliche Frage gestellt wurde, aber es zeigte auf Google Ergebnisse.

Ich ging durch etwas ähnliches heute und wollte meine Antwort teilen (für die nächste unglückliche Seele, die diese Verwirrung steht).

Ich bin mit einem Streamwriter (sw) mit einem Memorystream (ms) Daten im Speicher zu halten und dann zu einem Filestream auszuzuspülen (fs) in bestimmten Intervallen.

So ich tat

    sw.WriteLine(DateTime.Now.ToString("u").Replace("Z", "") & ":  " & entry)

Und dann, nachdem alles gesagt und getan war

    ms.WriteTo(fs)
    fs.Flush()
    fs.Close()
    ms.Close()

Das Problem war, dass ich nicht die Streamwriter auf den Memory Spülung ersten

Ändern von diesem gelöst meinem Problem.

    sw.Flush()
    ms.WriteTo(fs)
    fs.Flush()
    fs.Close()
    ms.Close()

stand ich dieses Problem heute, wenn der Code wie unten war:

XmlTextWriter writer = new XmlTextWriter("IdP.xml", null);
writer.Formatting = Formatting.Indented;
xmlElement.WriteTo(writer);

Das Problem wurde behoben, wenn ich es wie unten geändert:

using (XmlTextWriter writer = new XmlTextWriter("IdP.xml", null))
{
    writer.Formatting = Formatting.Indented;
    xmlElement.WriteTo(writer);
}

Hope dies ist nützlich, um jemanden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top