XmlSerializer Leere Variable serialisieren, um beide Tags zu verwenden?
Ich möchte in der Lage sein, eine serialisierte XML-Klasse in einen Soap-Umschlag zu laden. Ich fange an, damit ich nicht die Innereien fülle, so sieht es so aus:
<Envelope
xmlns="http://schemas.xmlsoap.org/soap/envelope/" />
Ich möchte, dass es so aussieht:
<Envelope
xmlns="http://schemas.xmlsoap.org/soap/envelope/" ></Envelope>`
Die Klasse, die ich geschrieben habe, ist folgende:
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://schemas.xmlsoap.org/soap/envelope/")]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "http://schemas.xmlsoap.org/soap/envelope/",ElementName="Envelope", IsNullable = true)]
public class TestXmlEnvelope
{
[System.Xml.Serialization.XmlElement(ElementName="Body", Namespace="http://schemas.xmlsoap.org/soap/envelope/")]
public System.Collections.ArrayList Body = new System.Collections.ArrayList();
} //class TestXmlEnvelope`
Ich verwende dies als Beispiel, da andere Leute es vielleicht in einem einzelnen Element wollen. Ich bin sicher, das muss einfach sein, aber leider kenne ich nicht das richtige Schlüsselwort dafür.
Wie immer vielen Dank für Ihre Hilfe.
[Bearbeiten] Der Fehler tritt auf, wenn ich versuche, diese Anweisung zu verwenden
System.Xml.Serialization.XmlSerializer xmlout = new System.Xml.Serialization.XmlSerializer(typeof(TestXmlEnvelope));
System.IO.MemoryStream memOut = new System.IO.MemoryStream();
xmlout.Serialize(memOut, envelope, namespc);
Microsoft.Web.Services.SoapEnvelope soapEnv = new Microsoft.Web.Services.SoapEnvelope();
soapEnv.Load(memOut);
Es gibt mir die Fehlermeldung "Root Element not found".
[Bearbeiten] Ich habe den Fehler behoben. Das Problem war, dass ich, nachdem ich das Objekt serialisiert habe, memOut.Position = 0 nicht gesetzt habe. Trotzdem hoffe ich, dass diese Frage anderen Leuten hilft, die dies tun möchten.