2017-02-08 9 views
0

Deserializng XML-строка в объект C# не работает, так как я все еще получаю значения с нулевым значением. Errors, RequestStatus и Version отображают нулевые значения.Deserialize XML-строка в объект C# приводит к обнуляемым данным

Нужно орел, чтобы увидеть, что я не понимаю. Я не новичок в Dot Net framework, но я новичок в Dot Net Core, поэтому, возможно, что-то другое, о чем я не знаю.

[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); 

ответ

0

Ваша структура класс соответствует:

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

Первый <Root> элемент соответствует GetAuthorizationTokenResponse класса, а второй к RootDetail класса. Удалите одну из них или перестройте свой входной XML.

+0

Кажется, что избавиться от 'public RootDetail Root {get; set;]' придется поделать. Это работает сейчас. : -/Будет сложно сделать эту работу с JSON и XML обратно. : - / – fletchsod