Десериализовать, что элементы xml, имеющие нулевые значения, и свойства, имеющие IsNullable = true - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь десериализовать XML для объекта. Ниже приведен класс

[XmlRoot("Root")]
    public class Root
    {
        [XmlElement("SampleXmls")]
        public List<SampleXml> SampleXmls { get; set; }
    }

    public class SampleXml
    {

        [XmlElement("firstname")]
        public string fname { get; set; }


        [XmlElement("lastname")]
        public string lname { get; set; }


        [XmlElement("age")]
        public int age { get; set; }


        [XmlElement("additionalinformation")]
        public AdditionalInformation AdditionalInformation { get; set; }
    }


    public class AdditionalInformation
    {

        [XmlElement("firstlane")]
        public string firstlane { get; set; }

        [XmlElement("secondlane")]
        public string secondlane { get; set; }

        [XmlElement("cityCode")]
        public decimal? cityCode { get; set; }

        [XmlElement("countryCode", IsNullable = true)]
        public int? countryCode { get; set; }

        [XmlElement("isValid", IsNullable = true)]
        public bool? isValid { get; set; }
        [XmlIgnore]
        public DateTime enteredDate { get; set; }
    }

Тестовый код

class Bar
    {

        static void Main(string[] args)
        {
            string testData = @"
            <Root>
                <SampleXmls>
                    <firstname>
                        Vijay
                    </firstname>
                    <lastname></lastname>
                    <age>
                        25
                    </age>
                    <additionalinformation>
                        <firstlane>
                            335
                        </firstlane>
                        <secondlane>
                            gulmohar
                        </secondlane>
                        <cityCode></cityCode>
                        <countryCode></countryCode>
                        <isValid></isValid>
                    </additionalinformation>
                </SampleXmls>
               </Root>";


            XmlSerializer serializer = new XmlSerializer(typeof(Root));
            using (TextReader reader = new StringReader(testData))
            {
              Root SampleXml  = (Root)serializer.Deserialize(reader);

            }

            Console.ReadKey();
}
}

Я могу десериализовать XML для объекта, когда я указываювсе данные для всех узлов. Но когда я не указываю данные для обнуляемых типов, я получаю исключение времени выполнения FormatException: Input string was not in a correct format, а когда isValid не указано с true or false, тогда я получаю The string '' is not a valid Boolean value.

Я неПонимаю, почему я получаю эти исключения во время выполнения, когда я указал IsNullabble = true для обнуляемых свойств класса.

Не могли бы вы помочь мне с этой проблемой и сообщить мне причину также

Спасибозаранее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...