Десериализация XML в список объектов, показывающих ошибку < xmlns=">, не ожидалась.
Я потребляю SOAP-сервисы из своего приложения и получаю следующий XMl-контент в качестве ответа, потребляющего файл .wsdl в моем коде.
<Vehicles> <FourWheeler> <Availability> <Brand>Toyota</Brand> <Model>Fortuner</Model> <Country>Japan</Country> <Cost>90000</Cost> </Availability> <Availability> <Brand>Hyundai</Brand> <Model>Elentra</Model> <Country>South Korea</Country> <Cost>75000</Cost> </Availability> <Availability> <Brand>Volkswagan</Brand> <Model>Polo</Model> <Country>Gremany</Country> <Cost>95000</Cost> </Availability> <Availability> <Brand>Tata</Brand> <Model>Nano</Model> <Country>25000</Country> <Cost></Cost> </Availability> </Outbound> <TwoWheeler></TwoWheeler> </Vehicles>
Я разработал свой класс для десериализации XML таким образом::
using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; using System.Xml.Serialization; namespace ConsoleApp2 { [XmlRoot("Vehicles")] public class Vehicles { [XmlElement("FourWheeler")] public FourWheeler FourWheeler { get; set; } } [XmlRoot("FourWheeler")] public class FourWheeler { [XmlElement("Availability")] public Vehicles Availability { get; set; } } [XmlRoot("Availability")] public class Availability { [XmlElement("Brand")] public string Brand { get; set; } [XmlElement("Model")] public string Model { get; set; } [XmlElement("Country")] public string Country { get; set; } [XmlElement("Cost")] public string Cost { get; set; } } }
Мой код для десериализации XML в список таков :
XmlSerializer xmlSerializer = new XmlSerializer(typeof(List<Vehicles>)); System.IO.StreamReader sr = new System.IO.StreamReader("E:\\xmlTier.txt"); List<Vehicles> flightavailabilitylst = (List<Vehicles>)xmlSerializer.Deserialize(sr);
Я получаю ошибку в строке
List<Vehicles> flightavailabilitylst = (List<Vehicles>)xmlSerializer.Deserialize(sr);:
System.InvalidOperationException: 'There is an error in XML document (1, 2).'
InvalidOperationException: <Vehicles xmlns=''> was not expected.
Что происходит неправильно и каков правильный подход к преобразованию XML в список объектов???
Что я уже пробовал:
Глядя в XML, иерархия-это список доступности транспортных средств "FourWheeler"... Поэтому я добавил код:
XmlRootAttribute xRoot = new XmlRootAttribute(); xRoot.ElementName = "Vehicles"; xRoot.IsNullable = true;
Это мне не помогло.