.NET 4.0で.NETのDataContractSerializerを使用してXMLに変換する一連のクラスがあります。シリアライゼーションは正常に動作しており、XMLを解析して後で.NETオブジェクトを後で再作成することはできます。.Net DataContractSerializerで "http://www.w3.org/2001/XMLSchema-instance"名前空間を使用しないようにする
ただし、ほとんどのDataMemberは必須ではありません。 [DataMember(IsRequired = false)]。これはXMLのデシリアライズに効果的です。XMLノードをドキュメントから逃すことはできますが、既存のオブジェクトをXMLにシリアル化するとき、DataContractSerializerはnull値を属性として持つノードとしてプロパティを書き出すことを主張します。
[DataContract(Name = "response", Namespace = "http://domain.com/name")]
public class MyResponseClass
{
[DataMember(Name = "count", IsRequired = true, Order = 0)]
public int Count { get; set; }
[DataMember(Name = "info", IsRequired = false, Order = 1)]
public InfoClass Info { get; set; }
[DataMember(Name = "metadata", IsRequired = false, Order = 2)]
public MetadataList Metadatas { get; set; }
}
は
<response xmlns="http://domain.com/name">
<count>4</count>
</response>
からシリアライズすることができ、私はオブジェクトをシリアライズしかし、もし、それが作成されます。
<response xmlns="http://domain.com/name" xmlns:i="http://www.w3.org/2001/XmlSchema-instance">
<count>4</count>
<info i:nil="true" />
<metadata i:nil="true" />
</response>
を代わりにノードを記述しないようにDataContractSerializerを取得する方法はあります、それはnull値を持っていますか?
。 –
よく斑点を付けました...カットアンドペーストで何かが間違っていました... –