[英]How do I not Serialize an object if the object is empty
如果 object 的值为 null,有没有办法不序列化 object? 我的 xml 一直有很多空
<PersonName></PersonName>
(没有其他 object 具有正在序列化的此值。)
System.Xml.Serialization.XmlSerializer
默认跳过 null 属性。 所以你不必做任何事情。
显然,您需要跳过等于string.Empty
的属性。
使用XmlSerializer
时,您可以应用System.ComponentModel.DefaultValue
属性来指定一个不会被序列化的值。
例如,您有下一个 class:
public class Person
{
public int Id { get; set; }
[DefaultValue("")]
public string PersonName { get; set; }
public int Age { get; set; }
}
使用以下代码时
var person = new Person { Id = 1, PersonName = "", Age = 20 };
var ser = new XmlSerializer(typeof(Person));
var settings = new XmlWriterSettings { Indent = true };
using (var writer = XmlWriter.Create("result.xml", settings))
{
ser.Serialize(writer, person);
}
你会得到这个结果
<?xml version="1.0" encoding="utf-8"?>
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Id>1</Id>
<Age>20</Age>
</Person>
但要小心:在反序列化过程中不会考虑此属性。 因此,从这样的 XML 你将得到一个Person
class ,其PersonName
属性等于null
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.