これで何か助けていただければ幸いです。私は苦労しています。
HTTP リクエストから XML レスポンスを受け取ります。私はその構造を制御できないため、その構造を自分のデータ コントラクトと一致させる必要があります。ただし、何をしても、Result オブジェクトのすべてのプロパティは null または既定値です。
XML 構造:
<Customnamedroot xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Results="2" Skip="0">
<Object>
<Something xsi:nil="true" />
<Anything>2012-06-08T11:21:27</Anything>
<Booleanthing>true</Booleanthing>
</Object>
<Object>
<Something>1463387</Something>
<Anything>2012-06-07T09:16:11.41</Anything>
<Booleanthing>true</Booleanthing>
</Object>
</Customnamedroot>
呼び出し:
SearchResults objects = response.Content.ReadAsAsync<SearchResults>().Result;
対応するデータ コントラクト クラス:
[CollectionDataContract(Name = "Customnamedroot", ItemName = "Object", Namespace = "")]
public class SearchResults : List<Result>
{
}
//[DataContract(Name = "Object")]
public class Result
{
[DataMember(Order = 1, Name = "Something", IsRequired = false)]
public decimal? Something{ get; set; }
[DataMember(Order = 2, Name = "Anything", IsRequired = true, EmitDefaultValue = false)]
public DateTime Anything{ get; set; }
[DataMember(Order = 3, Name = "Booleanthing", IsRequired = true, EmitDefaultValue = false)]
public bool Booleanthing{ get; set; }
}
編集:この問題は、DataContract(Name = "Object") が省略されている場合に発生します。その DataContractAttribute が追加されると、次のエラーが発生します。
System.Runtime.Serialization.SerializationException: Error in line 1 position 157.
'EndElement' 'Object' from namespace '' is not expected.
Expecting element 'Something| Anything'.
私は何を間違っていますか?