C# Projekt mit XMLspy
-
Ich habe mit dem XMLspy Version 10 ein C# Projekt erzeugt,
um die jeweiligen xml-Dateien lesen und schreiben zu können.Beim Speichern werden jedoch alle Zeichen "0D-0A-09" entfernt.
Laut XMLspy sind die gespeicherten Dateien jedoch weiterhin gültig.Benutze ich jedoch zum erneuten Laden die Funktion "LoadFromString(<string>)"
wird ein Fehler ausgelöst. Wenn die Funktion "Load(<file>)" benutzt wird,
dann kommt der Fehler nicht. Wenn ich "Load(<file>)" benutzen müsste,
würde dies im Hauptprojekt einen erheblichen Mehraufwand bedeuten.Außerdem gibt es noch eine Merkwürdigkeit:
Wenn ich zum Speichern "Save(<file>)" benutze, dann wird am Anfang
der Datei "EF-BB-BF" eingetragen. Wenn ich "str = SaveToString()"
benutze (und anschl. den String speicher) dann werden die Zeichen nicht eingetragen.Kennt sich jemand mit SPYxml-Projekten aus?
Bin für jede Hilfe dankbar.
-
csofti schrieb:
Beim Speichern werden jedoch alle Zeichen "0D-0A-09" entfernt.
google mal nach xml preserve whitespace
csofti schrieb:
Wenn ich zum Speichern "Save(<file>)" benutze, dann wird am Anfang der Datei "EF-BB-BF" eingetragen.
-
Vielen Dank für den Hinweis!
Ich habe herausgefunden, das zum Speichern einer XML-Datei mit Zeilenumbrüchen und -einrückungen, sowie ohne Byte Order Mark (EF-BB-BF), das vom XMLspy erzeugte C# Wrapper Projekt angepasst werden muss.
Hier die originale Funktion (AltovaXML -> Document.cs):
public void Save(string filename, Node node) { XmlTextWriter writer = new XmlTextWriter(filename, encoding); Save(writer, node); writer.Close(); }
Folgende Änderungen müssen rein:
public void Save(string filename, Node node) { XmlTextWriter writer = new XmlTextWriter(filename, new System.Text.UTF8Encoding(false)); writer.Formatting = Formatting.Indented; writer.IndentChar = (char)09; writer.Indentation = 1; Save(writer, node); writer.Close(); }