我有下面的XML:XML DataContractDeserialization需要幫助
<?xml version="1.0" ?>
<Responses>
<ResponseList>
<Response type="XXX">
<Foo>YYYY</Foo>
<Bar>ZZZZ</Bar>
</Response>
</ResponseList>
</Responses>
我應該我的課的樣子,這樣我可以反序列化字符串轉換爲對象(我使用的是的DataContractSerializer)
[DataContract(Namespace = "")]
[Serializable]
public class Responses : DataContainer
{
[DataMember]
public ResponseCollection ResponseList { get; set; }
}
[Serializable]
public class Response : DataContainer
{
[DataMember]
public string Foo { get; set; }
[DataMember]
public string Bar { get; set; }
}
[Serializable]
public class ResponseCollection : List<Response>
{
}
我實際上能夠使用DataContractSerializer ....我的目標是利用DataContractSerializer將一個XML字符串(一個響應)反序列化到一個對象中,並且我得到了兩個屬性的NULL(foo &酒吧)。
[Serializable]
[DataContract(Namespace = "")]
public class Responses : DataContainer
{
[DataMember(Name = "ResponseList")]
public Response[] Response { get; set; }
}
[Serializable]
[DataContract(Namespace = "")]
public class Response : DataContainer
{
[DataMember(Order = 0)]
public string Foo { get; set; }
[DataMember(Order = 1)]
public string Bar { get; set; }
}
當遇到類似的問題在過去,我已經建立了一個儘可能接近xml定義的類,創建一個實例並使用給定的測試數據填充它,然後序列化它。 將結果與給定的xml輸入進行比較並調整,直到它通過測試。然後,您應該能夠反序列化到該類。我也很好奇,看看有沒有更簡單的方法。 – asawyer 2011-12-29 21:44:29
你不能用'DataContractSerializer'來做你想做的事。它不使用屬性。 – 2011-12-29 22:16:19
@John Saunders - 實際上,DataContractSerializer確實使用屬性,如問題中的示例代碼所示。請參閱[DataMemberAttribute](http://msdn.microsoft.com/zh-cn/library/system.runtime.serialization.datamemberattribute.aspx),[DataContractAttribute](http://msdn.microsoft.com/zh-cn/ library/system.runtime.serialization.datacontractattribute.aspx)和[DataContractSerializer](http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractserializer.aspx) – Nathan 2011-12-29 22:34:02