XML сериализация без значения - PullRequest
0 голосов
/ 18 октября 2019

Как выполнить сериализацию в c #

<Tag>
 <Export />
 <Delete />
</Tag>

Проблема в том, что узел не имеет значения. Узел присутствует в xml означает, что это правда (bool).

1 Ответ

0 голосов
/ 18 октября 2019

В одну сторону:

public class Export { }
public class Delete { }

public class Tag
{
    public Export Export { get; set; }      
    public Delete Delete { get; set; }  
}

, а затем:

var tag = new Tag()
{
    Export = new Export(),
    Delete = new Delete(),
};
serializer.Serialize(writer, tag);

В качестве альтернативы мы можем использовать IXmlSerializable:

public class Tag : IXmlSerializable
{
    public bool HasExport { get; set; }
    public bool HasDelete { get; set; }

    public XmlSchema GetSchema() => null;

    public void WriteXml(XmlWriter writer)
    {
        if (HasExport)
            writer.WriteElementString("Export", null);
        if (HasDelete)
            writer.WriteElementString("Delete", null);
    }

    public void ReadXml(XmlReader reader)
    {
        // TODO...
    }
}

, а затем:

var tag = new Tag()
{
    HasExport = true,
    HasDelete = true,
};
serializer.Serialize(writer, tag);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...