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

本文关键字:字段 记为 IsRequired XmlElement 属性 | 更新日期: 2023-09-27 18:25:14

我有一个要序列化的类

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

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

IsNullable属性应该可以做到这一点。

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

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

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

<MyStringArray xsi:nil = "true" />