2017-02-08 2 views
0

Deserializng XML-Zeichenfolge in C# -Objekt funktioniert nicht, da ich noch NULL Werte erhalten kann. Errors, RequestStatus und Version zeigen alle Nullwerte.Deserialize XML-Zeichenfolge in C# -Objekt Ergebnis in nullbaren Daten

Brauchen Sie ein Adlerauge hier zu sehen, was ich falsch verstehe. Ich bin nicht neu in Dot Net Framework, aber ich bin neu in Dot Net Core, also vielleicht etwas anderes da, von dem ich nichts weiß.

[XmlRoot(Namespace = "", ElementName = "Root", DataType = "string", IsNullable = true)] 
public class GetAuthorizationTokenResponse 
{ 
    public class RootDetail 
    { 
     public class RequestHeadDetail 
     { 
      [XmlElement("Errors")] 
      public string Errors { get; set; } 
      [XmlElement("RequestStatus")] 
      public string RequestStatus { get; set; } 
      [XmlElement("Version")] 
      public string Version { get; set; } 
     } 

     [XmlElement("RequestHead")] 
     public RequestHeadDetail RequestHead { get; set; } = new RequestHeadDetail(); 
    } 

    [XmlElement("Root")] 
    public RootDetail Root { get; set; } = new RootDetail(); 
} 

var xmlResult = "<Root><RequestHead><Errors/><RequestStatus>0</RequestStatus><Version>2.3.2</Version></RequestHead></Root>"; 
var stringReader = new StringReader(xmlResult); 
var test = (Ituran.GetAuthorizationTokenResponse)xmlSerializer.Deserialize(stringReader); 

Antwort

0

Ihre Klassenstruktur entspricht:

<Root> 
    <Root> 
    … 
    </Root> 
</Root> 

Das erste Element <Root>GetAuthorizationTokenResponse Klasse entspricht, und die zweite zu RootDetail Klasse. Entfernen Sie entweder eine davon oder restrukturieren Sie Ihre Eingabe-XML.

+0

Scheint, dass loswerden von 'public RootDetail Root {get; set;]' müssen mit sich ausruhen. Das funktioniert jetzt. : -/Es wird schwierig sein, dies mit JSON und XML wieder hin zu arbeiten. : - / – fletchsod