c# - 可以使用 XmlAttributes 有选择地 XmlIgnore 吗?

标签 c# xml xml-serialization

我有一个相当大的类要序列化为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/

相关文章:

C# - 使用内部构造函数反序列化类

c# - 您可以向没有数据源的数据网格添加数据吗?

c# - 在 Windows Phone 8.1 中的单独文本 block 上检索 PHP 数据

c# - 如果属性存在于 xmldocument 中,则将其移除

xml - 如何获取 XSLT 1.0 中的当前日期?

c# - 如何使 ShouldSerialize*() 仅适用于 XML 而不是 JSON 序列化?

java - 需要从Java导出CCR格式的数据

c# - 从 C# 调用 Matlab 编译函数时执行错误

c# - 如何解析 WordOpenXML 输出中的 mathML?

jquery - ajax xml 出现空数据错误