RESTful API呼び出しから返されたXMLをデシリアライズしていません。REST API呼び出しから返されたXMLを逆シリアル化する方法は?
System.AggregateException:1つ以上のエラーが発生した これは私が戻って取得していますエラーメッセージです。 ----> System.Runtime.Serialization.SerializationException: 名前空間の名前の 「http://schemas.datacontract.org/2004/07/MyProject.Web」.. 発生しました「要素」「一部」、名前空間からの要素「ArrayOfAPIUtility.PartInfo」を期待行1 位置106でエラーが発生しました''。
私は成功したREST接続を作成するためにthis stackoverflow答えました。
返されるXMLは次のようになります。
<Part>
<ItemId>12345</ItemId>
<ItemDescription>Item Description</ItemDescription>
<Cost>190.59</Cost>
<Weight>0.5</Weight>
</Part>
は、私はこのようにそれをデシリアライズするためにしようとしています:
public class PartInfo
{
public string ItemId { get; set; }
public string ItemDescription { get; set; }
public string Cost { get; set; }
public string Weight { get; set; }
}
public void GetPartInfo(string itemId)
{
var URL = ...some URL...;
client.BaseAddress = new Uri(URL);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));
HttpResponseMessage response = client.GetAsync(urlParameters).Result;
if (response.IsSuccessStatusCode)
{
var dataObjects = response.Content.ReadAsAsync<IEnumerable<PartInfo>>().Result;
foreach (var d in dataObjects)
{
Console.WriteLine("{0}", d.ItemId);
}
}
}
結果は、上記の貼り付けられたエラーメッセージです。私は
:-)ここでは非常に基本的な何かが足りないと思う
はあなたの助けのためにありがとうございました!
のXML LINQをお試しください。私はクラスの注釈を付けなければならないと思うので、XMLのシリアライゼーションではTagNameの "Part"が必要であるか、クラスの名前を "Part"に変更する必要があることがわかります。 – Fildor
あなたの返事ありがとう@Fildor!どのようにしてクラスに注釈を付けると、XMLシリアライゼーションはTagNameの "Part"を期待しなければならないのでしょうか? – jrn
クラス名を 'public class Part'に変更しても、私はまだ上に貼り付けられたのと同じエラーメッセージを受け取ります。 @Fildor – jrn