我有一个相当大的类要序列化为Xml,为了减少空间浪费,我想有选择地XmlIgnore一些类属性。例如,类中的一个属性被赋值的次数只有十分之一左右,如果我将序列化属性编码如下
[XmlAttribute]
public String WorkClass
{
get { return _workClass; }
set { _workClass = value; }
}
如果没有值(大部分时间),它会一遍又一遍地序列化为
WorkClass=""
是否有一个选项或属性可以在其值为空时忽略该属性进行序列化,但如果它不为空则不忽略它?
最佳答案
您可以为每个不希望序列化的值创建方法
当 WorkClass
包含空字符串以外的内容时,以下方法将返回 true
,如果您使用的是 .NET Framework 4,则可以选择使用 string.IsNullOrWhitespace()
也会检查空格 ' '
。
public bool ShouldSerializeWorkClass() {
return !string.IsNullOrEmtpy(WorkClass);
}
当 Xml Serializer 运行时,它会根据命名约定寻找这个方法,然后选择是否序列化该属性。
方法的名称应始终以 ShouldSerialize
开头,然后以属性名称结尾。然后你只需要根据你想要的任何条件返回一个 bool 值,关于是否序列化该值。
关于c# - 可以使用 XmlAttributes 有选择地 XmlIgnore 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9672232/