のリストを含むシリアル化されたオブジェクトのXMLを返すRESTサービスがありint
ます。オブジェクトコードは以下のとおりです
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
namespace All.Tms.Dto
{
[XmlRoot(Namespace = "http://schemas.datacontract.org/2004/07/All.Tms.Dto")]
public class ReadSensorsForVehicleIdResponse
{
public List<int> sensorIdList { get; set; }
}
}
このオブジェクトがシリアル化されると、XMLが生成され、次のように送信されます。
<ReadSensorsForVehicleIdResponse xmlns="http://schemas.datacontract.org/2004/07/All.Tms.Dto" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><sensorIdList xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays"><a:int>107</a:int></sensorIdList></ReadSensorsForVehicleIdResponse>
問題は、int値が次のようにシリアル化されることです。
<a:int>107</a:int>
これにより、オブジェクトの逆シリアル化が失敗します。着替えたら
<a:int>107</a:int>
に
<int>107</int>
オブジェクトは正しく逆シリアル化されます。値がこのようにシリアル化される理由はありますint
か?また、この問題を修正するにはどうすればよいですか?
これが私が逆シリアル化するために使用するコードです
public static T Deserialize<T>(string xml) where T : class
{
var serializer = new XmlSerializer(typeof(T));
var stream = new MemoryStream(Encoding.UTF8.GetBytes(xml));
var reader = XmlReader.Create(stream);
return (T)serializer.Deserialize(reader);
}