tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
17
ZUGRIFFE
2464
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Gloki Gloki ist offline Mitglied
    Registriert seit
    Sep 2005
    Beiträge
    12
    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
     

  2. #2
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    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
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  3. #3
    Gloki Gloki ist offline Mitglied
    Registriert seit
    Sep 2005
    Beiträge
    12
    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 :
    1
    2
    3
    4
    5
    
    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

    Danke schonmal für weitere Antworten

    Gloki
     

  4. #4
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    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. Struktur in Datei speichern - Thread
    Wenn Du noch fragen hast dann poste doch mal das bissel VB Code.

    MfG, cosmo
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  5. #5
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Zitat Zitat von cosmochaosmaker
    Wo ist jetzt genau das Problem? Ich weiss nicht wie Du das jetzt anstellst.
    Ich meinte nicht das ich nicht weiss wie das geht.
    Meinte jetzt das ich nicht weiss wie Du das jetzt versuchst,
    weil Du deinen Code nicht gepostet hast.
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  6. #6
    Gloki Gloki ist offline Mitglied
    Registriert seit
    Sep 2005
    Beiträge
    12
    Also, ich habe folgende Funktion:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    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 :
    1
    2
    3
    4
    
    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 :
    1
    2
    3
    4
    5
    
    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 )
     

  7. #7
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    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.
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  8. #8
    Gloki Gloki ist offline Mitglied
    Registriert seit
    Sep 2005
    Beiträge
    12
    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
    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
     

  9. #9
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    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
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  10. #10
    Gloki Gloki ist offline Mitglied
    Registriert seit
    Sep 2005
    Beiträge
    12
    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
    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?
     

  11. #11
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    wie kann ich der XmlNode-Klasse das Serializable-Attribut zuweisen?
    Meines erachtens muss auch das Objekt in dem sich die Node befindet
    auch als Serializable markiert werden. Weiss nicht mehr genau...
    Muss ich die Klasse dann irgendwie überschreiben, oder sowas?
    Oder versuchs so. Wenn ich jetzt Zeit hätte würd ich's mal testen.
    Stecke jetzt aber im Stress, sorry.
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  12. #12
    Gloki Gloki ist offline Mitglied
    Registriert seit
    Sep 2005
    Beiträge
    12
    Stecke jetzt aber im Stress, sorry.
    Für Stress muss man sich doch nicht entschuldigen

    Und schließlich sollst du mir ja nicht das Ganze Programm schreiben

    Aber vieleicht könntest du mir nochmal einen kleinen Denkanstoss geben.

    Ich hab mich nochmal ein bisschen im Internet schlau gemacht und ein bisschen rumprobiert und bin auf folgendes Ergebnis gekommen:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    
    Imports System
    Imports System.Xml
    Imports System.Runtime.Serialization
     
    <Serializable()> _
    Public Class MyXmlDocument
        Inherits XmlDocument
        Implements ISerializable
     
     
     
        Public Sub New()
     
            MyBase.New()
     
        End Sub
     
        Public Overloads Sub load(ByVal filename As String)
     
            MyBase.Load(filename)
     
        End Sub
     
        Public Sub GetObjectData(ByVal info As System.Runtime.Serialization.SerializationInfo, ByVal context As System.Runtime.Serialization.StreamingContext) Implements System.Runtime.Serialization.ISerializable.GetObjectData
     
            info.AddValue("xmlDocument", Me.OuterXml, GetType(XmlDocument))
     
        End Sub
     
     
    End Class

    Damit komme ich mal soweit, dass mein Host mir ein Xml-File lädt und dieses dann über Return an meinen Client gibt.

    Aber der Client meckert dann so:
    Der für die Deserialisierung eines Objektes mit dem Typ XmlDocSerializable.MyXmlDocument erforderliche Konstruktor wurde nicht gefunden
    Ich hab aber leider keine Ahnung, wie ich den Konstruktor umschreiben muss. Oder wie ich ihn aufrufen muss.

    Hast du vieleicht eine Idee?
     

  13. #13
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Uups, hab Dich übersehen, sorry.

    Du brauchst hier eigentlich nur das Srializable-Attribut.
    Das ISerializable Interface ist nur zum verändern des De/Serialisierungsverhaltens gedacht.
    .NET Framework Class Library ISerializable Interface - MSDN

    MfG, cosmo
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  14. #14
    Gloki Gloki ist offline Mitglied
    Registriert seit
    Sep 2005
    Beiträge
    12
    Ok, ich hab es jetzt nochmal nur mit dem Serializable-Attribut versucht, funktioniert aber auch nicht, dann meckert er wieder darüber, dass das XmlDocument nicht als serialisierbar markiert ist.
    Ist jetzt aber auch egal, das Programm funktioniert mit dieser oben aufgeführten Serialize-Funktion.
    Und ich hab jetzt leider keine Zeit und Lust mehr, mich mit diesem Problem ´rumzuschlagen

    Aber Vielen Dank nochmal für alles, hast mir wirklich weitergeholfen

    Gloki
     

  15. #15
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Zitat Zitat von Gloki
    Ok, ich hab es jetzt nochmal nur mit dem Serializable-Attribut versucht, funktioniert aber auch nicht, dann meckert er wieder darüber, dass das XmlDocument nicht als serialisierbar markiert ist.
    Ist jetzt aber auch egal, das Programm funktioniert mit dieser oben aufgeführten Serialize-Funktion.
    Und ich hab jetzt leider keine Zeit und Lust mehr, mich mit diesem Problem ´rumzuschlagen

    Aber Vielen Dank nochmal für alles, hast mir wirklich weitergeholfen

    Gloki
    1. Mach ich kein VB
    2. Kann ich es nicht lesen
      Frag nicht warum, bei mir geht es nicht!
    3. Hab ich selber noch nie versucht das XMLDocument zu serialisieren.
    4. Hab ich schon gesagt das ich im Moment keine Zeit hab es selber auszuprobieren.
    5. Hätte sich sicher schon jemand gemeldet der's schon versucht hat und weiss das es nicht geht.
    • Versuchs mit nem anderen/einfachen Objekt
    • Versuch es plain (ohne den Schnickschnack drum herrum)
    • Und kein Problem, helfe gerne.
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

Ähnliche Themen

  1. [C#] Element aus einer XMLNode lesen
    Von TsEnG im Forum .NET Windows Forms
    Antworten: 6
    Letzter Beitrag: 16.09.10, 11:15
  2. [C#] XmlElement aus XmlNode auslesen
    Von Henig im Forum .NET Windows Forms
    Antworten: 1
    Letzter Beitrag: 11.08.10, 08:36
  3. XmlNode vorhanden?
    Von yooti im Forum .NET Datenverwaltung
    Antworten: 1
    Letzter Beitrag: 14.01.10, 04:13
  4. Serialisieren
    Von nex_m im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 4
    Letzter Beitrag: 02.04.09, 19:18
  5. XMLNode suchen und löschen
    Von pixelknipsr im Forum PHP
    Antworten: 0
    Letzter Beitrag: 23.03.07, 14:29