新しい.NET3.0DataContractSerializerを使用しています。シリアル化する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の場合)およびempty(リストの場合)要素を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>
実際、上記のファイルはシリアライザーで正常に逆シリアル化されます。
ご協力いただきありがとうございます!