Пометить поле как IsRequired с атрибутом [XmlElement] - PullRequest
2 голосов
/ 20 февраля 2012

У меня есть класс, который я хочу сериализовать

[System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://xyz.com/schema")]
public class Customer
{
    [System.Xml.Serialization.XmlElementAttribute(Order = 0)]
    public int Id { get; set; }

    [System.Xml.Serialization.XmlElementAttribute(Order = 1)]
    public string Name { get; set; }

    [System.Xml.Serialization.XmlElementAttribute(Order = 2)]
    public string Url{ get; set; }

    [System.Xml.Serialization.XmlElementAttribute(Order = 3)]
    public string Count { get; set; }
}

При десериализации, если Url имеет значение null, выходной XML не содержит Url Node. Как пометить его как обязательное поле, чтобы узел Url создавался каждый раз?

1 Ответ

2 голосов
/ 20 февраля 2012

Атрибут IsNullable должен это сделать.

 [System.Xml.Serialization.XmlElementAttribute(Order = 2,IsNullable=true)]

Если установлено значение true, он должен сгенерировать тег (в соответствии с MSDN).

Если для свойства IsNullable установлено значение true, атрибут xsi:nil создается для членов класса, для которых установлена ​​нулевая ссылка (Ничего в Visual Basic).Например, если для поля с именем MyStringArray задана ссылка null (Ничего в Visual Basic), XmlSerializer создаст следующий код XML.

<MyStringArray xsi:nil = "true" />
...