如何在C#中的XML序列化过程中忽略空值



我正在从数据库中获取数据。如果DBObject数据的空值("")不是null,那么我希望从XML序列化中排除该值。

EventComment event = new EventComment();
event.Comments = datalogic.GetComment();
if(event.Comments != String.Empty){
//Add Logic
}
SerializeToXmL(event)
//dataLogic Class
public string GetComment()
{
var datalink = _unitOfWork.GetRepository<tbl1>()
.GetFirstOrDefault(predicate: source => (source.id == id));


return datalink .comment;
}

我知道我们可以使用null值,但我不想给变量赋值null值。我可以从null获得不同的解决方案吗。在XML系列化之后,我现在得到了空标签。

<comment/>

null值已被排除;如果我们谈论忽略空字符串(""(;条件序列化";是你的朋友。许多串行器(包括XmlSerializer(通过众所周知的public bool ShouldSerialize*()模式支持这一点,例如:

public class Foo
{
[XmlElement("comment")]
public string Comment { get; set; }
public bool ShouldSerializeComment() => !string.IsNullOrEmpty(Comment);
}

如果我用一个空的Comment序列化它:Comment成员就不会被序列化。您可以简单地扩展它以应用任何其他您喜欢的逻辑,例如:

public bool ShouldSerializeComment() => !string.IsNullOrWhiteSpace(Comment);

最新更新