Benutzer mit den meisten Antworten
Serialisieren

Frage
-
Hallo,ich serialisiere eine Klasse und müsste folgende Zeilen als erste herausbekommen:<?xml version="1.0" encoding="utf-8" standalone="yes"?><?Creator company="MyCompany" unique="true"?><?Created date="2013-05-23 10:30:19"?>Die erste Zeile ist natürlich kein Problem, aber wie bekomme ich die beidenanderen Zeilen?ich serialisiere mit dieser Funktion:Public Sub Serialize(fileName As String)Dim serializer As XmlSerializer = New XmlSerializer(GetType(KBL_container))Dim writer As StreamWriter = New StreamWriter(fileName, False, NewText.UTF8Encoding)serializer.Serialize(writer, Me)writer.Close()End Sub
Antworten
-
Hi,
hier mal eine Demo:Imports System.IO Imports System.Xml Imports System.Xml.Serialization Module Module1 Sub Main() Dim c As New KBL_container c.Serialize("c:\temp\x.xml") Console.WriteLine(My.Computer.FileSystem.ReadAllText("c:\temp\x.xml")) Console.ReadKey() End Sub End Module Public Class KBL_container Public Sub Serialize(fileName As String) Dim ms As New IO.MemoryStream Dim sb As New Text.StringBuilder Dim serializer As XmlSerializer = New XmlSerializer(GetType(KBL_container)) Using str As New StreamWriter(fileName, False, New Text.UTF8Encoding) Using writer As New XmlTextWriter(str) writer.WriteProcessingInstruction("xml", "version=""1.0"" encoding=""utf-8"" standalone=""yes""") writer.WriteProcessingInstruction("Creator", "company=""MyCompany"" unique=""true""") writer.WriteProcessingInstruction("Created", "date=""2013-05-23 10:30:19""") serializer.Serialize(writer, Me) End Using End Using End Sub End Class
--
Viele Gruesse
Peter- Als Antwort vorgeschlagen Stefan FalzModerator Dienstag, 28. Mai 2013 12:09
- Als Antwort markiert Ionut DumaModerator Dienstag, 11. Juni 2013 07:54
Alle Antworten
-
Hi,
hier mal eine Demo:Imports System.IO Imports System.Xml Imports System.Xml.Serialization Module Module1 Sub Main() Dim c As New KBL_container c.Serialize("c:\temp\x.xml") Console.WriteLine(My.Computer.FileSystem.ReadAllText("c:\temp\x.xml")) Console.ReadKey() End Sub End Module Public Class KBL_container Public Sub Serialize(fileName As String) Dim ms As New IO.MemoryStream Dim sb As New Text.StringBuilder Dim serializer As XmlSerializer = New XmlSerializer(GetType(KBL_container)) Using str As New StreamWriter(fileName, False, New Text.UTF8Encoding) Using writer As New XmlTextWriter(str) writer.WriteProcessingInstruction("xml", "version=""1.0"" encoding=""utf-8"" standalone=""yes""") writer.WriteProcessingInstruction("Creator", "company=""MyCompany"" unique=""true""") writer.WriteProcessingInstruction("Created", "date=""2013-05-23 10:30:19""") serializer.Serialize(writer, Me) End Using End Using End Sub End Class
--
Viele Gruesse
Peter- Als Antwort vorgeschlagen Stefan FalzModerator Dienstag, 28. Mai 2013 12:09
- Als Antwort markiert Ionut DumaModerator Dienstag, 11. Juni 2013 07:54
-
"Peter Fleischer [MVP]" schrieb> hier mal eine Demo:OK Danke - läuft!Kleines Problem am Rand: Bei meiner Version habe ich bei der Anzeige imTexteditor einen Zeilenumbruch nach jeder "xml-Zeile".Bei Deiner Version ist das komplette xml in einer Zeile. Woran liegt das -kann man das ändern - muss man das ändern?Danke
-
Bei Deiner Version ist das komplette xml in einer Zeile. Woran liegt das - kann man das ändern - muss man das ändern?
Nebenbei, XML ist es relativ egal, wo Zeilenvorsprünge, Tabs oder Leerzeichen sind. Die Reader übergehen die AFAIK einfach, ignorieren also jeden Whitespace zwischen den Tags. Das dient alles nur dem menschlichen Bedürfnis nach Lesbarkeit. :-)
LG, Dennis.