从序列化XML中删除xsi:nil

时间:2015-09-03 11:57:14

标签: xml xml-serialization

我正在使用XmlSerializer将对象序列化为XML。在那里我使用了属性IsNullable = true来获取XML中的元素,即使该值为null。

因此,当值为NULL时,其对应的元素是可见的,但具有额外属性xsi:nil="true"

有没有办法在序列化的XML中删除该属性?

1 个答案:

答案 0 :(得分:0)

您可以使用 ShouldSerialize {property_name} 方法

例如,如果您的属性是SomeClassInstance

[XmlElementAttribute(IsNullable = true)]
public SomeClass SomeClassInstance { get; set; }

您可以像这样向该类添加方法:

public bool ShouldSerializeSomeClassInstance()
{
    return (SomeClassInstance != null);
}

这种方式只有在它不为空时才出现在输出XML中。

参考:https://msdn.microsoft.com/en-us/library/53b8022e(v=vs.110).aspx