可以使用XmlAttributes选择性地使用XmlIgnore
本文关键字:XmlIgnore 选择性 XmlAttributes 可以使 | 更新日期: 2023-09-27 18:27:27
我有一个相当大的类要序列化为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序列化程序运行时,它将根据命名约定查找此方法,然后选择是否序列化该属性。
方法的名称应始终以ShouldSerialize
开头,然后以属性名称结尾。然后,您只需要根据您想要的任何条件返回一个布尔值,决定是否序列化该值。