using System.Xml.Serialization;
public const string Namespace = "http://schemas.xmlsoap.org/soap/envelope/";
[XmlRoot(Namespace = Namespace)]
[XmlElement(ElementName = "Body2", Namespace = "")]
public Header Header { get; set; }
public Body Body { get; set; }
public string Data = "qweqwe";
public Body Body2 = new Body();
public string Data = "qweqwe";
public static void Main()
var data = new RootObject.Envelope
Header = new RootObject.Header(),
Body = new RootObject.Body()
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("soap", RootObject.Namespace);
ns.Add("xsi", "https://www.w3.org/2001/XMLSchema-instance");
ns.Add("xsd", "http://www.w3.org/2001/XMLSchema");
StringWriter strWriter = new StringWriter();
XmlSerializer serializerXML = new XmlSerializer(data.GetType());
serializerXML.Serialize(strWriter, data, ns);
Console.WriteLine(strWriter.ToString());