XmlNode() serialisieren Remoting

Gloki

Grünschnabel
Hallo,

ich versuch jetzt schon die ganze Zeit, dieses XmlNode-Array zu serialisieren und über Remoting zu versenden, bekomme es aber einfach nicht hin.

Kann mir vieleicht irgendjemand einen Tipp geben, welchen Formatter, Serializer und welchen Stream ich dafür benutzen muss.

Vielen Dank schonmal

Gloki
 
Hallo Gloki!

Das XMLNode-Array wird von selber serialisiert. Dafür ist das Framework doch da.
Wir haben hier im Forum ein 5 Sterne Remoting Tutorial (C#).
Schau es Dir mal an und wenn Du noch fragen hast, frag einfach.

MfG, cosmo
 
Danke erstmal für deine schnelle Antwort, aber wenn

Das XMLNode-Array wird von selber serialisiert.

dann müsste es ja reichen, wenn ich im Host den Array über

Code:
Dim nodeArray as XmlNode()

--- Code ---

Return nodeArray

zurückgebe. Aber wenn ich es so mache, bekomme ich eine Fehlermeldung, dass XmlNode nicht als serialisierbar markiert ist.

Deswegen wollte ich das Ganze irgendwie in einen Stream (z.B. MemoryStream) serialisieren und diesen dann an meinen Client schicken, der diesen wieder deserialisiert.
Aber das bekomme ich irgendwie nicht hin, denn ich schaffe es nicht das Array zu serialisieren.

Ich hoffe, ich habe mich jetzt verständlicher ausgedrückt :)

Ach ja, ich benutze Visual Basic.Net, falls das einen Unterschied macht :confused:

Danke schonmal für weitere Antworten

Gloki
 
Ich mach selber kaum was mit Remoting da ich lieber via Sockets & SOAP also unabhängige Geschichten entwickle.

Wo ist jetzt genau das Problem? Ich weiss nicht wie Du das jetzt anstellst.
Schau mal in diesen Thread. [thread=199855]Struktur in Datei speichern - Thread[/thread]
Wenn Du noch fragen hast dann poste doch mal das bissel VB Code.

MfG, cosmo
 
Also, ich habe folgende Funktion:
Code:
Public Function serialize(ByVal obj As Object, ByVal myType As Type) As MemoryStream

    Dim serializer As New XmlSerializer(myType) 
    Dim ms As New MemoryStream 

    Try
        serializer.Serialize(ms, obj) 
        ms.Position = 0
        Return ms
    Catch e As Exception
        Console.WriteLine("Failed to serialize. Reason: " & e.Message)ausgeben
        Throw
    End Try

End Function

Mit dieser kann ich z.B. eine Variable vom Typ XmlDocument in einen MemoryStream serialisieren und diesen kann ich dann zurückgeben:

Code:
Dim myDoc as XmlDocument

myDoc.Load("myXml.xml")
Return Serialize(myDoc, GetType(XmlDocument))

Mein Problem ist nun, dass ich mit dieser Funktion keinen XmlNode-Array serialisieren kann, da ich keinen XmlSerializer mit dem Typ XmlNode() (also dem Array) erstellen kann.
Also so:

Code:
Dim nodeArray As XmlNode()

--- Hier fülle ich den nodeArray ---

Return Serialize(nodeArray, GetType(XmlNode()))

Im Moment löse ich das Problem, indem ich jeden einzelnen Knoten in dem Array serialisiere und zurückgebe, aber das ist keine gute Lösung, da ich dann immer wieder dieselbe Funktion in meinem Host aufrufe. Könnte ich das ganze Array zurückgeben, müsste ich diese Funktion nur einmal aufrufen ;)

Und ich suche jetzt eigentlich nur nach einer Möglichkeit, dieses Array komplett zu serialisieren (wenn das überhaupt geht :confused: )
 
Wie währe es wenn Du dein NodeArray in eine RootNode packst und diese serialisierst. ;)
Desweiteren ist es verschwendung das Ding in ein XML zu serialisieren.
Damit willst jetzt ja nichts anderes anfangen als es wieder zu deserialisieren.
Daher kannst es auch Binar und somit drei mal kleiner serialisieren. ;)
 
Wie währe es wenn Du dein NodeArray in eine RootNode packst und diese serialisierst.
Sorry, von RootNode habe ich noch nie was gehört :confused:
Und in der Hilfe finde ich nur dieses
Document.RootNode
The RootNode property returns the console's root Node object. This property is read-only.

Property RootNode As Node
Property Value
The console's root node.
Example Code


' Retrieve the document's RootNode property.
Dim objRoot As MMC20.Node
Set objRoot = objDoc.RootNode

' Use the RootNode object.
' ...

' Free the object when done.
Set objRoot = Nothing

Requirements
Client: Included in Windows XP.
Server: Included in Windows Server 2003.

Das kann doch nicht das Richtige sein, oder?

Und wenn ich das Ganze binär serialisieren will, dann krieg ich wieder die Fehlermeldung, dass das XmlDocument nicht als serialisierbar markiert ist.

Trotzdem nochmal Danke

Gloki
 
Mit RootNode meinte ich eine Node die dein NodeArray hält.
Desweiteren musst Du schon alles was Du serialisieren willst,
mit dem Serializable-Attribut versehen.

MfG, cosmo
 
Mit RootNode meinte ich eine Node die dein NodeArray hält.
Ähm ja, jetzt wo ich verstehe, was du meinst, hört sich diese Idee gut an :eek:
Werde ich gleich mal versuchen :)

Desweiteren musst Du schon alles was Du serialisieren willst,
mit dem Serializable-Attribut versehen.
Genau das ist mein Problem, wie kann ich der XmlNode-Klasse das Serializable-Attribut zuweisen?
Muss ich die Klasse dann irgendwie überschreiben, oder sowas?
 

Neue Beiträge

Zurück