Please, is any convenience way to avoid namespace attributes for nested member Request when serializing ResponseMessageEnvelope class? Result xml will not be used for deserialization.
[XmlInclude(typeof(AuthenticateRequest))]
[XmlRoot("REQUEST",Namespace="")]
public abstract class BaseRequest
{
...
}
[XmlRoot("REQUEST", Namespace = "")]
public class AuthenticateRequest : BaseRequest
{
...
}
[XmlRoot("EXTSYSTEM", Namespace="")]
public class ResponseMessageEnvelope
{
public ResponseMessageEnvelope(BaseRequest request, BaseReponse response)
{
Request = request;
Response = response;
}
[XmlElement("REQUEST", Namespace = "")]
public Request.BaseRequest Request
{
get;
set;
}
public override string ToString()
{
StringBuilder sb = new StringBuilder();
var ns = new XmlSerializerNamespaces();
ns.Add("", "");
using (XmlWriter sWriter = XmlWriter.Create(sb, new XmlWriterSettings() { OmitXmlDeclaration = true ,Indent = true }))
{
XmlSerializer serializer = new XmlSerializer(typeof(ResponseMessageEnvelope));
serializer.Serialize(sWriter, this, ns);
return sb.ToString();
}
}
}
I tried empty namespace for XmlRoot attribute on base and derived class, also for XmlElement on member but without success. Thanks for advice.
<EXTSYSTEM>
<REQUEST xmlns:p2="http://www.w3.org/2001/XMLSchema-instance" p2:type="AuthenticateRequest">
...
</REQUEST>
....
</EXTSYSTEM>
This I would like to have:
<EXTSYSTEM>
<REQUEST>
...
</REQUEST>
....
</EXTSYSTEM>