標準の .NET Xml シリアライザーを使用する場合、すべての null 値を非表示にする方法はありますか? 以下は、私のクラスの出力の例です。null に設定されている場合は、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>
ベストアンサー1
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になります - Ageがないことに注意してください
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>Chris</Name>
</Person>