Есть ли способ условно не десериализовать элемент XML с помощью XmlSerializer в C #? - PullRequest
0 голосов
/ 14 декабря 2018

Я не хочу десериализовать некоторые элементы файла XML, если выполняется какое-либо условие, например, посмотрите на следующий пример кода:

namespace Test
{
    [Serializable]
    public class Person
    {
        [XmlElement]
        public string FirstName { get; set; }

        [XmlElement]
        public int Age { get; set; }
    }

    internal class Program
    {
        private static string _xml = @"<?xml version=""1.0"" encoding=""utf-16""?>
<ArrayOfPerson xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
  <Person>
    <FirstName>Kate</FirstName>
    <Age>25</Age>
  </Person>
  <Person>
    <FirstName>Johh</FirstName>
    <Age>THIS IS NOT NUMBER DO NOT SERIALIZE AGE FOR Johh</Age>
  </Person>
</ArrayOfPerson>";

        public static void Main()
        {
            var sr = new StringReader(_xml);
            var xmlDeserializer = new XmlSerializer(typeof(List<Person>));
            var persons = xmlDeserializer.Deserialize(sr);
        }
    }
}

В основном то, чего я хочу достичь здесьне десериализовать элемент возраста человека и оставить его по умолчанию, если их FirstName = "John".Я знаю, что ShouldSerialize * подход к условно сериализовать свойства.Есть ли что-то похожее для десериализации или, возможно, любой другой подход, который я могу использовать для достижения условной десериализации с использованием XmlSerializer без реализации собственного десериализатора?

...