Benutzer mit den meisten Antworten
2 Fragen zu Serialisierung (Zeilenumbruch & Headereintrag)

Frage
-
Hallo Zusammen,2 Probleme, Herausforderungen.
A) Für mich reicht einen Low Header
IST: <STORAGEPRODUCT xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">default<POSITIONS> <POSITION> <CounterIndex value="0" /> <Label value="Testmarking0815" /> </POSITION> <POSITION> SOLL: <STORAGEPRODUCT>default<POSITIONS> <POSITION> <CounterIndex value="0" /> <Label value="Testmarking0815" /> </POSITION> <POSITION>
B) Beim Serialisieren wird alles in eine Zeile geschrieben.
Nur über den Browser gut zu lesen.
Besser wäre, wenn es wie üblich mit Zeilenumbrüche wäre.
Wie kann ich diese Punkte erreichen? Bestimmt einfach, wenn man es weiß.
Danke im Voraus.Viele Grüße Sandra-----------------------Was habe ich versucht? public class MyXmlTextWriter : XmlTextWriter { // Add whichever constructor(s) you need, e.g.: public MyXmlTextWriter(Stream stream, Encoding encoding) : base(stream, encoding) { } public override void WriteStartDocument() { // Do nothing (omit the declaration) // lässt das dann weg // <?xml version="1.0" encoding="utf-8"?> } public override void WriteQualifiedName(string localName, string ns) { } public override void WriteStartAttribute(string prefix, string localName, string ns) { base.WriteStartAttribute(prefix, localName, ns); } } /////////////////////// public static void SerializeObject<T>(string FileName, T DataObject) { XmlSerializer Serializer = new XmlSerializer(typeof(T)); FileStream FileStream = new FileStream(FileName, FileMode.Create); //XmlTextWriter TextWriter = new XmlTextWriter(FileStream, Encoding.ASCII); MyXmlTextWriter TextWriter = new MyXmlTextWriter(FileStream, Encoding.ASCII); TextWriter.Indentation = 4; TextWriter.IndentChar = ' '; TextWriter.Formatting = Formatting.Indented; //TextWriter.Settings.NewLineOnAttributes = true; ???? Serializer.Serialize(TextWriter, DataObject); TextWriter.Close(); FileStream.Close(); FileStream.Dispose(); }
- Bearbeitet Sandra Bauer Montag, 29. Februar 2016 20:17 F
Antworten
-
Hallo Sandra,
warum gehst du hier über eine eigene Klasse bei der du zwar einiges manuell bestimmen kannst, wo aber im Regelfall auch eine 5-Zeilige Methode reicht?
zu B) Die XmlWriter.Create-Methode nimmt in einigen Überladungen ein XmlWriterSettings-Objekt entgegen dem du angeben kannst dass das XMLNS weg gelassen werden soll. Ein Beispiel dazu findest du unter How to serialize an object to XML without getting xmlns=“…”?
zu A) Dem XmlWriterSettings-Objekt kannst du auch noch die Ident-Eigenschaft auf true setzen. Dann müssten Zeilenumbrüche mit generiert werden.
Das Beispiel unter B zeigt dir eine Klasse mit allen typischerweise benötigten Funktionen und gemeinsamen Einstellungsmöglichkeiten.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort markiert Sandra Bauer Dienstag, 1. März 2016 05:03
Alle Antworten
-
Hallo Sandra,
warum gehst du hier über eine eigene Klasse bei der du zwar einiges manuell bestimmen kannst, wo aber im Regelfall auch eine 5-Zeilige Methode reicht?
zu B) Die XmlWriter.Create-Methode nimmt in einigen Überladungen ein XmlWriterSettings-Objekt entgegen dem du angeben kannst dass das XMLNS weg gelassen werden soll. Ein Beispiel dazu findest du unter How to serialize an object to XML without getting xmlns=“…”?
zu A) Dem XmlWriterSettings-Objekt kannst du auch noch die Ident-Eigenschaft auf true setzen. Dann müssten Zeilenumbrüche mit generiert werden.
Das Beispiel unter B zeigt dir eine Klasse mit allen typischerweise benötigten Funktionen und gemeinsamen Einstellungsmöglichkeiten.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort markiert Sandra Bauer Dienstag, 1. März 2016 05:03
-
Hallo Sandra,
die XmlTextWriter-Klasse sollte man nicht mehr benutzen. Zitat aus dem MSDN-Artikel:
Starting with the .NET Framework 2.0, we recommend that you use the System.Xml.XmlWriter class instead.
Das dein Code nicht funktioniert kann ich nicht nachvollziehen. Bei mir werden die Zeilenumbrüche und Einrückungen eingefügt.
PS: Entschuldige bitte das meine Antwort 2 Tage länger dauerte. Ich wollte es nochmal selbst testen.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets