将字段标记为具有属性[XmlElement]的IsRequired

时间:2012-02-20 10:48:42

标签: c# xml serialization xsd xml-serialization

我有一个我要序列化的课程

[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,则out XML不包含Url Node。 如何将其标记为必填字段,以便每次都创建Url节点?

1 个答案:

答案 0 :(得分:2)

IsNullable属性应该这样做。

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

如果设置为true,则应生成标记(根据MSDN)。

  

如果IsNullable属性设置为true,则xsi:nil属性为   为已设置为空引用的类成员生成   (在Visual Basic中没有任何内容)。例如,如果您设置了一个名为的字段   MyStringArraynull引用(在Visual Basic中没有任何内容),   XmlSerializer生成以下XML代码。

<MyStringArray xsi:nil = "true" />