又一个XML反序列化问题。XML反序列化返回空数组
我检查了其他几个线程,并尝试了大多数解决方案,但无济于事。 我收到的XML不能被改装成的(或至少不容易),在这里它是:
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<ActueleVertrekTijden>
<VertrekkendeTrein>
<RitNummer>37047</RitNummer>
<VertrekTijd>2012-11-13T15:40:00+0100</VertrekTijd>
<EindBestemming>Sneek</EindBestemming>
<TreinSoort>Stoptrein</TreinSoort>
<Vervoerder>Arriva</Vervoerder>
<VertrekSpoor wijziging=\"false\">3</VertrekSpoor>
</VertrekkendeTrein>
<VertrekkendeTrein>
<RitNummer>10558</RitNummer>
<VertrekTijd>2012-11-13T15:46:00+0100</VertrekTijd>
<EindBestemming>Rotterdam Centraal</EindBestemming>
<TreinSoort>Intercity</TreinSoort>
<RouteTekst>Heerenveen, Steenwijk, Utrecht C</RouteTekst>
<Vervoerder>NS</Vervoerder>
<VertrekSpoor wijziging=\"false\">4</VertrekSpoor>
</VertrekkendeTrein>
<VertrekkendeTrein>
<RitNummer>37349</RitNummer>
<VertrekTijd>2012-11-13T15:59:00+0100</VertrekTijd>
<EindBestemming>Groningen</EindBestemming>
<TreinSoort>Sneltrein</TreinSoort>
<RouteTekst>Buitenpost</RouteTekst>
<Vervoerder>Arriva</Vervoerder>
<VertrekSpoor wijziging=\"false\">5b</VertrekSpoor>
</VertrekkendeTrein>
</ActueleVertrekTijden>
有多个元素(总是的10 minumum)
现在,这些都是我的班反序列化:
[Serializable, XmlRoot(ElementName="ActueleVertrekTijden", DataType="VertrekkendeTrein", IsNullable=false)]
public class ActueleVertrekTijden
{
[XmlArray("ActueleVertrekTijden")]
public VertrekkendeTrein[] VertrekLijst { get; set; }
}
[Serializable]
public class VertrekkendeTrein
{
[XmlElement("RitNummer")]
public string RitNummer { get; set; }
[XmlElement("VertrekTijd")]
public string VertrekTijd { get; set; }
[XmlElement("EindBestemming")]
public string EindBestemming { get; set; }
[XmlElement("Vervoerder")]
public string Vervoerder { get; set; }
[XmlElement("VertrekSpoor")]
public string VertrekSpoor { get; set; }
}
我暂时忽略了其他人。我添加了XmlRoot部分,因为我得到了“xmlsn =” - 错误。所以不得不设置XmlRoot。
现在解串器:
public ActueleVertrekTijden Deserialize<ActueleVertrekTijden>(string s)
{
var ser = new XmlSerializer(typeof(ActueleVertrekTijden));
ActueleVertrekTijden list = (ActueleVertrekTijden)ser.Deserialize(new StringReader(s));
return list;
}
它返回一个ActueleVertrekTijden类,但VertrekLijst阵列保持为空
我可能是错的,但我不认为你想XmlRoot'的'了'DataType'属性设置为。你可以尝试只设置'ElementName'?我认为它不一定会解决它,但只是注意到它。 –
当我尝试反序列化外部XML时,我尝试序列化它的类表示,然后将其与我接收的外部XML进行比较。 .NET'XmlSerializer'的工作方式通常会有一些小混乱或者忽略/遗忘。尝试在您的应用程序中创建一个包含数据的ActueleVertrekTijden样本,将其序列化为XML,并将其与您尝试反序列化的源XML的差异进行比较。 –
这是一个好主意(现在我为什么没有想到自己)。 –