XML序列化-隐藏空值
使用标准的.NET Xml序列化器时,有什么方法可以隐藏所有空值?下面是我的类输出的示例。我不想输出可为空的整数(如果将它们设置为null)。
当前Xml输出:
<?xml version="1.0" encoding="utf-8"?><myClass>
<myNullableInt p2:nil="true" xmlns:p2="http://www.w3.org/2001/XMLSchema-instance" />
<myOtherInt>-1</myOtherInt>
</myClass>
我想要的是:
<?xml version="1.0" encoding="utf-8"?><myClass>
<myOtherInt>-1</myOtherInt>
</myClass>
回答:
您可以使用ShouldSerialize{PropertyName}
告诉XmlSerializer是否应序列化成员的模式来创建函数。
例如,如果您的类属性被调用,MyNullableInt
您可能拥有
public bool ShouldSerializeMyNullableInt() {
return MyNullableInt.HasValue;
}
这是一个完整的样本
public class Person{
public string Name {get;set;}
public int? Age {get;set;}
public bool ShouldSerializeAge()
{
return Age.HasValue;
}
}
用以下代码序列化
Person thePerson = new Person(){Name="Chris"};XmlSerializer xs = new XmlSerializer(typeof(Person));
StringWriter sw = new StringWriter();
xs.Serialize(sw, thePerson);
以下XML的结果-注意没有年龄
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>Chris</Name>
</Person>
以上是 XML序列化-隐藏空值 的全部内容, 来源链接: utcz.com/qa/420253.html