我正在使用新的 .NET 3.0 DataContractSerializer。我有我要序列化的 Nullable< > 和 List< > 对象。例子:
[DataContract(Namespace = "")]
class Test
{
public static void Go()
{
Test test = new Test();
var dcs = new DataContractSerializer(typeof(Test));
dcs.WriteObject(new StreamWriter("test.xml").BaseStream, test);
}
[DataMember]
public Nullable<int> NullableNumber = null;
[DataMember]
public int Number = 5;
[DataMember]
public List<int> Numbers = new List<int>();
}
当 .NET 序列化 null 或空列表时,它会将 nil(对于 Nullable)和空(对于列表)元素放入 XML。上面的示例生成:
<Test xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<NullableNumber i:nil="true"/>
<Number>5</Number>
<Numbers xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</Test>
由于我没有时间描述的原因,我想消除多余的 NullableNumber 和 Numbers 元素,如下所示:
<Test xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Number>5</Number>
</Test>
事实上,上面的文件用序列化器反序列化就好了。
谢谢你的帮助!