如何解决如何在C#中进行XMLSerilization时忽略空值?
我正在从数据库中获取数据。如果DBObject数据的空值("")
不为null,那么我想从XML Serilization中剔除该值。
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获得不同的解决方案吗? 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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。