Die Datenquelle, die ich verwende, sendet immer Daten mit derselben Elternklasse (Models in der XML), mit xsi: type, um den tatsächlichen Typ der Klasse zu bestimmen. Das hat gut funktioniert, bis sie begannen, dem xsi: type einen Namensraum hinzuzufügen. Jetzt wird es nicht deserialisieren, egal was ich versuche.Deserialisieren von XML mit mehreren Namespaces
Hier ist der 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>
Der Wurzelknoten
[XmlRoot("ModelResource")]
public class XmlRoot
{
[XmlElement("Models")]
public List<BaseObject> Bases { get; set; }
}
Die Elternklasse
[XmlInclude(typeof(MyChildClass))]
public abstract class BaseObject
{
}
Das Kind Klasse
[XmlType(TypeName = "myChildClass", Namespace = "http://www.example.com/otSpace")]
public class MyChildClass : BaseObject
{
}
Wenn ich diese XML deserialisieren, winde ich mit dem Fehler auf:
{ "Der angegebene Typ nicht erkannt wurde: name = 'myChildClass', namespace = 'http://www.example.com/otSpace', an."}
Vielen Dank für Eure Hilfe.
Danke! Wenn Sie den übergeordneten Namespace explizit auf "" setzen, ist das fehlende Teil. Jetzt muss ich damit umgehen, dass MyChildClass zwar zu diesem Namespace gehört, aber keine seiner Eigenschaften zu diesem Namespace gehört, also muss ich sie alle explizit auf "" setzen, aber das ist nur "busywork". – JumboMaximus