У меня есть c# класс, который имеет 20 + свойства строки. Я приступил к одной четверти из тех, которые к фактическому значению. Я хотел бы сериализировать класс и получить вывод
<EmptyAttribute></EmptyAttribute>
для свойства
public string EmptyAttribute {get;set;}
Я не хочу, чтобы вывод был
<EmptyAttribute xsi:nil="true"></EmptyAttribute>
Я использую следующий класс
public class XmlTextWriterFull : XmlTextWriter
{
public XmlTextWriterFull(string filename) : base(filename,Encoding.UTF8) { }
public override void WriteEndElement()
{
base.WriteFullEndElement();
base.WriteRaw(Environment.NewLine);
}
}
так, чтобы я мог получить полные теги. Я просто не знаю, как избавиться от xsi:nil.
Я действительно смог понять это. Я знаю, что это немного похоже на хакерство, но вот как я заставил его работать
System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(header.GetType());
XmlTextWriterFull writer = new XmlTextWriterFull(FilePath);
x.Serialize(writer, header);
writer.Flush();
writer.BaseStream.Dispose();
string xml = File.ReadAllText(FilePath);
xml = xml.Replace(" xsi:nil=\"true\"", "");
File.WriteAllText(FilePath, xml);
Надеюсь, это поможет кому-то другому