Die Verwendung mehrerer namespaces beim Deserialisieren mit .NET XmlSerializer
Ich versuche zu Deserialisieren von XML mit zwei namespaces, wie diese
<records xmlns="http://www.foo.com/xml/records/1.1">
<record xmlns="http://www.foo.com/xml/record/1.1">
und manchmal eine ältere version
<records xmlns="http://www.foo.com/xml/records/1.1">
<record xmlns="http://www.foo.com/xml/record/1.0">
Meine Aufzeichnungen.cs Klasse hat
[XmlRoot(ElementName = "records", Namespace = "http://www.foo.com/xml/records/1.1")]
public class Records
{
[System.Xml.Serialization.XmlElementAttribute("record")]
public List<Record> Records { get; set; }
}
Möchte ich die Datensätze auflisten zu können, enthalten entweder eine version 1.0 oder version 1.1 Datensatz
///<remarks/>
[XmlRoot(IsNullable = false, ElementName = "record", Namespace = "http://www.foo.com/xml/record/1.0")]
public partial class Record
{
///<remarks/>
public Record()
{
}
}
///<remarks/>
[XmlRoot(IsNullable = false, ElementName = "record", Namespace = "http://www.foo.com/xml/record/1.1")]
public partial class Record11 : Record
{
///<remarks/>
public Record11()
{
}
}
also bin ich davon ausgegangen, das erstellen von Unterklassen der Datensatz arbeiten.
Bekomme ich eine Reflexion Ausnahme beim Deserialisieren und die Ausnahme, Punkte mich auf die XmlChoiceIdentifier Attribut. Aber, dass scheint im Zusammenhang mit enums.
Weiß wer, wie zu tun, was ich tun will (Unterstützung Deserialisieren von mehreren Versionen des gleichen schema?)
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
[XmlRoot]
Attribute auf beidenRecord
undRecord11
in deinem Beispiel, werden ignoriert. Sie haben nur Bedeutung, wenn das element ist eine Wurzel in den Baum. Was Sie vielmehr tun müssen, ist dieses: