To use XmlSerializer to serialize an object, it is required that the empty node be expressed as the start and end marking pairs:
Current format: <Wards/>
Expected format: <Wards> </Wards>
I searched for it online. C #-XmlSerializer Serialize empty variable to use both tags? The solution is:
Public class XmlTextWriterFull: XmlTextWriter {
Public XmlTextWriterFull (Stream stream, Encoding enc): base (stream, enc ){}
Public XmlTextWriterFull (String str, Encoding enc): base (str, enc ){}
Public XmlTextWriterFull (TextWriter sink): base (sink ){}
Public override void WriteEndElement (){
Base. WriteFullEndElement ();
}
}
Then I call:
MemoryStream stream = new MemoryStream ();
XmlSerializer serializer = new XmlSerializer (message. GetType ());
XmlTextWriter writer = new XmlTextWriterFull (stream, Encoding. Unicode );
Serializer. Serialize (writer, message );
StreamReader reader = new StreamReader (stream, Encoding. Unicode );
Stream. Position = 0;
String xml = reader. ReadToEnd ();
Stream. Close ();
Writer. Close ();
Reader. Close ();
Unfortunately, it never succeeds.