Я следующую структуру класса (не упрощенный BTW):Basic сериализации выдает ошибку «Invalid XML»
[Serializable]
[XmlInclude(typeof(Twitter))]
[XmlInclude(typeof(LinkedIn))]
public abstract class SocialNetworkBase : ISocialNetwork
{
public abstract string UserName { get; set; }
}
public class Twitter : SocialNetworkBase
{
public override string UserName { get; set; }
}
public class LinkedIn : SocialNetworkBase
{
public override string UserName { get; set; }
}
И тогда я пытаюсь сериализации список «SocialNetworkBase», как:
new XmlSerializer(typeof(List<SocialNetworkBase>)).Serialize(ms, socialNetworks)
Который возвращает
<?xml version="1.0"?>
<ArrayOfSocialNetworkBase xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SocialNetworkBase xsi:type="LinkedIn">
<UserName>someUsername</UserName>
</SocialNetworkBase>
</ArrayOfSocialNetworkBase>
При попытке десериализации с помощью:
return new XmlSerializer(typeof(List<SocialNetworkBase>)).Deserialize(ms) as List<SocialNetworkBase>;
Следующая ошибка возникает:
Существует ошибка в документе XML (0, 0). («Отсутствует элемент корня.»)
Что здесь происходит? Дезаминирование до SocialNetworBase[]
вызывает такую же ошибку.
Уже делал это :-) –
@jan: Проясните это: вы получаете ту же ошибку после использования Seek()? –