Laden...
N
nix_kapito_csharp myCSharp.de - Member
Von weit her Dabei seit 03.11.2005
Benutzerbeschreibung

Forenbeiträge von nix_kapito_csharp Ingesamt 8 Beiträge

05.11.2005 - 16:12 Uhr

Hallo !

Zuers will ich sagen : Danke an alle, die Lösungsvorschlägen gemacht haben !

Und jetzt...
Die Lösung des Problems :
Vor der Deserialisierung schreibe ich Byte-Strom, den ich empfangen
habe in ein MemoryStream, der dann deserialisiert wird.
Nachdem man in das MemoryStream geschrieben hat, sollte man folgendes
machen :

MemoryStream.Position = 0 ;

Jetzt kann man ruhig deserialisieren, jetzt klappt es 😁

Nochmal Danke an alle !

04.11.2005 - 13:55 Uhr

Nö, klappt trotzdem nicht, aber danke !

04.11.2005 - 13:34 Uhr

Ich bekomme folgendes :

System.Xml.XmlException: Das Stammelement ist nicht vorhanden.
at System.Xml.XmlTextReader.Read()
at System.Xml.XmlReader.MoveToContent()
at Microsoft.Xml.
Serialization.GenerateAssembly.XmlSerializationReader1.Read4_XmlMessage()

?(

Es fehlt also das Stammelement, in meinem Fall ist es ja <XmlMessage> oder ?

04.11.2005 - 13:16 Uhr

Versuch mal das, kostenlos, wird aber einiges erklärt

http://www.galileopro.de/openbook/csharp/galileocomputing_csharp.zip

04.11.2005 - 13:10 Uhr

Also ich habe alles was vorgeschalgen wurde :

  • encoding
  • ohne 1 Zeile (<?xml version="1.0"?>)
    ausprobiert, aber irgendwie klappt es immer noch nicht !
03.11.2005 - 17:09 Uhr

Ja, meine Schuld, habe Slash vergessen beim eintippen 😁
Die Idee mit der Codierung ist sehr interessant, werde das mal
ausprobieren...

03.11.2005 - 16:47 Uhr

Also im Byte-Stream, der beim Server ankommt steht folgendes :

<?xml version="1.0"?>
<XmlMessageClass xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:
xsi="http://www.w3.org/2001/XMLSchema-instance">
<Zahl1>7</Zahl1>
<Zahl2>4</Zahl2>
<Operator>Minus</Operator>
<XmlMessageClass>

Also ich bin kein XML kenner, aber für mich sieht das gut aus, was meint ihr ?

03.11.2005 - 15:23 Uhr

Servus Leut !

Kann mir jemand helfen ?

Ich habe Client und Server, Client schickt eine Nachricht an Server, die Nachricht ist
eine Klasse, die mit XmlSerializer.Serialize serialisiert wird.
Das alles klappt wunderbar, die Nachricht erreicht ihr Ziel, aber deserialisieren
kann ich irgendwie nicht 😦
Kommt so ne Exception :

type 'System.InvalidOperationException' occured in system.xml.dll
Additional Information : Fehler im XML-Dokument (0,0)

Die Nachricht-Klasse is so definiert :

namespace XmlMessageClass
{
[Serializable]
public class XmlMessage
{
private int Number1, Number2;
private string Operator;

[XmlElement("Zahl1")]
public int SetGetNumber1
{
get{return(Number1);}
set{Number1 = value;}
}

usw. für jede Variable
}
}

ich versuche auf folgende Weise zu deserialisieren

Die ankommenden Bytes werden von einem NetworkStream
in ein Buffer geschrieben (BytesRead - Array)

dann :
XmlSerializer Serializer = new XmlSerializer(typeof(XmlMessage));
MemoryStream MStream = new MemoryStream();
MStream.Write(BytesRead, 0, BytesRead.Length);
XmlMessage IncomingMessage = new XmlMessage();
// Die nachfolgende Zeile schmeisst Exception
IncomingMessage = (XmlMessage)Serializer.Deserialize(MStream);
ConnectingClient.Close();

Sehe CSharp erst weit 2 Wochen, deswegen wäre schön wenn mir jemand
helfen könnte bzw. erklären wie das geht mit der Deserialisierung.

Danke