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

回到顶部