Источник данных, который я использую, всегда отправляет данные с одним и тем же родительским классом (Модели в xml), с xsi: type, чтобы определить фактический тип класса. Это работает нормально, пока они не начали добавлять пространство имен к типу xsi:. Теперь он не будет deserialize независимо от того, что я пытаюсь.Deserializing xml с несколькими пространствами имен
Вот XML:
<ModelResource xmlns:ot="http://www.example.com/otSpace">
<Models xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance xsi:type="ot:myChildClass">
Stuff here
</Models>
</ModelResource>
Корневой класс узел
[XmlRoot("ModelResource")]
public class XmlRoot
{
[XmlElement("Models")]
public List<BaseObject> Bases { get; set; }
}
Родительский класс
[XmlInclude(typeof(MyChildClass))]
public abstract class BaseObject
{
}
Ребенок
[XmlType(TypeName = "myChildClass", Namespace = "http://www.example.com/otSpace")]
public class MyChildClass : BaseObject
{
}
Когда я десериализации этот XML, я ветер с ошибкой:
{ "Указанный тип не был признан: имя = 'myChildClass', пространство имен = 'http://www.example.com/otSpace', в."}
Спасибо за ваша помощь.
Спасибо! Явное указание родительского пространства имен на «" - это недостающая часть. Теперь мне приходится иметь дело с тем, что, хотя MyChildClass принадлежит к этому пространству имен, ни одно из его свойств не принадлежит к этому пространству имен, поэтому мне нужно также указать все явно на «», но это просто занятие. – JumboMaximus