XmlSerializer Serialize variável vazia para usar as duas tags?
Quero poder carregar uma classe xml serializada em um envelope de sabão. Estou começando, então não estou enchendo as entranhas, então parece que:
<Envelope
xmlns="http://schemas.xmlsoap.org/soap/envelope/" />
Quero que apareça como:
<Envelope
xmlns="http://schemas.xmlsoap.org/soap/envelope/" ></Envelope>`
A classe que escrevi é esta:
[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`
Estou usando isso como exemplo, já que outras pessoas podem querer isso em um elemento individual. Estou certo de que isso deve ser simples, mas, infelizmente, não sei a palavra-chave certa para isso.
Como sempre, obrigado pela sua ajuda.
[Editar] O erro ocorre quando tento usar esta instrução
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);
Isso me dá o erro "Elemento raiz não encontrado".
[Editar] Corrigi o erro, o problema era que, depois de serializar o objeto, não defini o memOut.Position = 0. Ainda assim, espero que esta pergunta ajude outras pessoas que queiram fazer isso.