gpt4 book ai didi

c# - XML 反序列化返回空数组

转载 作者:数据小太阳 更新时间:2023-10-29 02:36:25 25 4
gpt4 key购买 nike

另一个 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 个)

现在这些也是我正在反序列化的类:

[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 数组仍然为空

最佳答案

您需要省略 wrapper 命名空间,因为您的数组元素直接出现在容器 ActueleVertrekTijden 类下方,没有任何集合 wrapper 元素。即改变

 [XmlArray("ActueleVertrekTijden")]
public VertrekkendeTrein[] VertrekLijst { get; set; }

 [XmlElement("VertrekkendeTrein")]
public VertrekkendeTrein[] VertrekLijst { get; set; }

引用 here

关于c# - XML 反序列化返回空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13363850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com