Используйте несколько пространств имен при десериализации с .NET XmlSerializer
я пытаюсь десериализовать XML с двумя пространствами имен, как это
а иногда и более старая версия
Мой класс Records.cs имеет
[XmlRoot(ElementName = "records", Namespace = "http://www.foo.com/xml/records/1.1")]
public class Records
{
[System.Xml.Serialization.XmlElementAttribute("record")]
public List Records { get; set; }
}
Я хочу, чтобы список записей мог содержать запись версии 1.0 или версии 1.1
///
[XmlRoot(IsNullable = false, ElementName = "record", Namespace = "http://www.foo.com/xml/record/1.0")]
public partial class Record
{
///
public Record()
{
}
}
///
[XmlRoot(IsNullable = false, ElementName = "record", Namespace = "http://www.foo.com/xml/record/1.1")]
public partial class Record11 : Record
{
///
public Record11()
{
}
}
поэтому я предположил, что подклассы записи будут работать.
Я получаю исключение Reflection при десериализации, и оно указывает на атрибут XmlChoiceIdentifier. Однако это похоже на перечисления.
Кто-нибудь знает, как сделать то, что я хочу сделать (поддерживает десериализацию нескольких версий одной и той же схемы?)
Благодарю.