Это C# в VS2012 и здание с .NET 4.5Deserialize XML с повторяющимися элементами
Я новичок в XML сериализации/десериализации и пытается понять это. У меня есть XML
<?xml version="1.0"?>
<AvailabilityResponse>
<ApiKey>[email protected]#tq*BAyX4KGYBsCgZ*HpUDtrB*XI*WGLw</ApiKey>
<ResellerId>101</ResellerId>
<SupplierId>1004</SupplierId>
<ForeignReference>1234567890</ForeignReference>
<Timestamp>2015-08-06T05:20:49.000Z</Timestamp>
<RequestStatus>
<Status>SUCCESS</Status>
</RequestStatus>
<TTAsku>dcnt</TTAsku>
<TourAvailability>
<TourDate>2015-08-31</TourDate>
<TourOptions>
<DepartureTime>07:30 PM</DepartureTime>
</TourOptions>
<AvailabilityStatus>
<Status>AVAILABLE</Status>
</AvailabilityStatus>
</TourAvailability>
<TourAvailability>
<TourDate>2015-08-31</TourDate>
<TourOptions>
<DepartureTime>08:30 PM</DepartureTime>
</TourOptions>
<AvailabilityStatus>
<Status>AVAILABLE</Status>
</AvailabilityStatus>
</TourAvailability>
</AvailabilityResponse>
и я пытаюсь десериализации в этой классовой структуры:
[Serializable]
public class AvailabilityResponse
{
public string ApiKey { get; set; }
public string ResellerId { get; set; }
public string SupplierId { get; set; }
public string ForeignReference { get; set; }
public DateTime Timestamp { get; set; }
public RequestStatus RequestStatus { get; set; }
public string TTAsku { get; set; }
public TourAvailability[] TourAvailability { get; set; }
}
[Serializable]
public class RequestStatus
{
public string Status { get; set; }
}
[Serializable]
public class TourAvailability
{
public DateTime TourDate { get; set; }
public TourOptions TourOptions { get; set; }
public AvailabilityStatus AvailabilityStatus { get; set; }
}
[Serializable]
public class AvailabilityStatus
{
public string Status { get; set; }
public string UnavailabilityReason { get; set; }
}
И я делаю это с:
public static AvailabilityResponse DeserializeAvailabilityResponse(Stream replyStream)
{
XmlSerializer xmlSr = null;
XmlReader inreader = null;
if (replyStream != null)
{
XmlTextReader xmlreader = new XmlTextReader(replyStream);
XmlDocument respXml = new XmlDocument();
respXml.Load(xmlreader);
xmlreader.Close();
xmlSr = DeserializeXmlDoc(respXml, out inreader, typeof(AvailabilityResponse));
}
if (xmlSr != null && inreader != null)
{
AvailabilityResponse inventory = (AvailabilityResponse)xmlSr.Deserialize(inreader);
return inventory;
}
return null;
}
Проблема в том, что, когда я проверьте возвращаемый товарный запас, TourAvailability
выглядит так:
w здесь я ожидал, что это будет похоже на RequestStatus, например, с [+], позволяющим мне открыть его и увидеть каждый элемент. Даже если бы я исказил это, я бы ожидал, что будет хотя бы одна TourAvailability, а не ноль.
Возможно, мне не хватает нескольких вещей, но любая помощь, которую вы можете дать, очень ценится. У меня есть куча таких вещей, с которыми приходится иметь дело, потому что наша компания слегка меняет направление.
я не делаю см. 'ДоступностьStatus'. Какова его структура? –
Вы можете убедиться, что ваши классы структурированы правильно, скопировав xml в буфер обмена, а затем сделайте Edit -> Paste Special -> Paste XML As Classes из visual studio в новый файл класса. – Crowcoder
Добавлен AvailabiltiyStatus в исходном вопросе. – Deverill