Я пытаюсь десериализовать некоторый XML, и я не могу получить пространство имен/xsi:type="Model"
для работы. Если xsi:type="Model"
не используется, он работает, но он должен быть там. Если я покину пространство имен из моей модели, я получаю сообщение об ошибке, если я его переименую, я получаю пустой список.Deserializing xml, включая пространство имен
XML-
<Vehicles xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Vehicle xsi:type="Model">
<Id>238614402</Id>
</Vehicle>
<Vehicle xsi:type="Model">
<Id>238614805</Id>
</Vehicle>
</Vehicles>
Модель
[XmlRootAttribute("Vehicles")]
public class Vehicles
{
public Vehicles()
{
Vehicle = new List<Vehicle>();
}
[XmlElement(ElementName = "Vehicle", Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
public List<Vehicle> Vehicle { get; set; }
}
public class Vehicle
{
[XmlElement("Id")]
public int Id { get; set; }
}
десериализации
XmlSerializer serializer = new XmlSerializer(typeof(Vehicles));
string carXML = "<Vehicles xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><Vehicle xsi:type=\"Model\"> <Id>238614402</Id> </Vehicle><Vehicle xsi:type=\"Model\"> <Id>238614805</Id> </Vehicle></Vehicles>";
var cars = (Vehicles)serializer.Deserialize(new StringReader(carXML));
В приведенном выше примере возвращает прерывать обслуживание y, потому что пространство имен ошибочно, насколько я знаю - как мне получить его, чтобы вернуть фактический список?
EDIT У меня нет никакого контроля над XML, я получаю, что от другого провайдера, так что я должен изменить остальную часть кода соответственно.
«но он должен быть там» - нет, это не так. Пространство имен элемента 'Vehicle' в вашем примере не является' http: // www.w3.org/2001/XMLSchema-instance' - это пространство имен в элементе 'Vehicles' вашего xml было связано с 'xsd' префикс пространства имен - но такой префикс не применяется к элементам« Vehicle »внутри. Следовательно, он находится в глобальном пространстве имен. –
Спасибо за ответ, если я покину пространство имен из моей модели, я получаю следующую ошибку: Указанный тип не был распознан: name = 'Model', namespace = '', at , [InvalidOperationException: указанный тип не был распознан: name = 'Model', namespace = '', at .] –
forte