Подавите xsi:nil, но все еще покажите Пустой Элемент при Сериализации в .NET

У меня есть 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.

10
задан James A Mohler 24 August 2013 в 18:15
поделиться

1 ответ

Я действительно смог понять это. Я знаю, что это немного похоже на хакерство, но вот как я заставил его работать

 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);

Надеюсь, это поможет кому-то другому

-6
ответ дан 4 December 2019 в 02:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: