У меня есть строка XML, которая извлекается как строка XML из вызова API. Мне нужно преобразовать это в модель представления в моем приложении, чтобы это можно было отобразить в представлении.
однако, поскольку у viewmodel есть только несколько узлов / элементов, которые есть в документе xml, я получаю исключение, когда пытаюсь десериализовать его. ниже код и ошибка.
Конечная точка API возвращает это
<response>
<data>
<categories>
<category>
<id>1</id>
<name>hats</name>
</category>
</categories>
</data>
</response>
Код:
namespace CatApp.Models
{
[XmlRoot("Categories")]
public class CategoriesViewModel
{
public CategoriesViewModel()
{
_categories = new List<Category>();
}
private List<Category> _categories;
[XmlElement("Category")]
public List<Category> Categories
{
get { return _categories; }
set { value = _categories; }
}
public class Category
{
[XmlElement("Id")]
public int Id { get; set; }
[XmlElement("Name")]
public string Name { get; set; }
}
}
}
public static async Task<CategoriesViewModel> GetAllCategories()
{
var model = new CategoriesViewModel();
try
{
var response = await client.GetStreamAsync(uri);
model = DeserializeXMLToObject<CategoriesViewModel>(response);
}
catch (Exception ex)
{
var exception = ex;
}
return model;
}
public static T DeserializeXMLToObject<T>(Stream stream)
{
T returnObject = default(T);
try
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
returnObject = (T)serializer.Deserialize(stream);
}
catch (Exception ex)
{
}
return returnObject;
}
Ошибка при
System.Xml.Serialization.XmlSerializer.Deserialize (XmlReader
xmlReader, String encodingStyle, события XmlDeserializationEvents)
в System.Xml.Serialization.XmlSerializer.Deserialize (Поток потока)
at CatApp.Controllers.HomeController.DeserializeXMLToObject [T] (Stream
поток) в
C: \ Users \ umerh \ Source \ \ Repos CatAPI \ CatApp \ Контроллеры \ HomeController.cs: линия
50