을 반환하고 또 다른 XML 비 직렬화 질문을 반환합니다.XML 비 직렬화는 빈 배열
다른 여러 스레드를 검사하고 거기서 대부분의 솔루션을 시도했지만 아무 소용이 없습니다. 내가받은 XML은 modded하게 (또는 적어도 쉽게) 할 수없는 여기있다 :
<?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 배열은 배열 요소가 컨테이너 ActueleVertrekTijden
바로 아래에 표시되기 때문에 당신은 래퍼 네임 스페이스를 생략 할 필요가
외부 XML을 deserialize하려고 할 때 문제가 발생하면 클래스 표현을 직렬화하려고 시도하고 실제로받는 외부 XML과 비교하려고합니다. .NET XmlSerializer가 어떻게 작동하는지에 대한 사소한 혼란 또는 감독/건망증이 종종 있습니다. 애플리케이션과 함께 데이터로'ActueleVertrekTijden' 샘플을 생성하고, XML로 직렬화하고, deserialize하려고하는 소스 XML과의 차이점을 비교해보십시오. –
그건 좋은 생각이야. (왜 내가 그 생각을하지 않았는가). –