XmlSerlializer не сериализует все свойства класса - PullRequest
0 голосов
/ 01 октября 2019

Я написал общий метод для объекта в строку XML, используя класс XMLSerializer. Ниже мой класс

public class SampleJson
    {
        public string fname { get; set; }
        public string lname { get; set; }
        public int age { get; set; }
        public AdditionalInformation AdditionalInformation { get; set; }
    }

    public class AdditionalInformation
    {
        public string firstlane { get; set; }
        public string secondlane { get; set; }
        public decimal? cityCode { get; set; }
        public int? countryCode { get; set; }
        public bool? isValid { get; set; }
        public DateTime enteredDate { get; set; }
    }

And below is Generic Method

public class QAZ
    {
        public static string Foo<T>(T dataToSerialize)
        {
            var stringWriter = new StringWriter();
            XmlTextWriter xmlTextWriter = null;
            var serializer = new XmlSerializer(dataToSerialize.GetType());
            xmlTextWriter = new XmlTextWriter(stringWriter);
            serializer.Serialize(xmlTextWriter, dataToSerialize);
            return stringWriter.ToString();
        }
    }

class Bar
    {

        static void Main(string[] args)
        {


            var sampleJson = typeof(SampleJson);
            var fooMethod = typeof(QAZ).GetMethod("Foo");
            var fooOfBarMethod = fooMethod.MakeGenericMethod(new[] {sampleJson});
            string xml= fooOfBarMethod.Invoke(new QAZ(), new object[] {new SampleJson()}).ToString();
        Console.ReadKey();
        }
    }

Но я получаю вывод

<?xml version="1.0" encoding="UTF-16"?>

-<SampleJson xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<age>0</age>

</SampleJson>

Я не понимаю, почему XmlSerializer сериализует только свойство int. Может кто-нибудь сказать мне проблему, которую я делаю.

Основная повестка дня здесь - я хочу создать xsd для SampleJson класса. Для этого я пытаюсь преобразовать класс в XML. От xml до xsd. Есть ли способ генерировать xsd из класса?

1 Ответ

0 голосов
/ 01 октября 2019

Я думаю, что это может помочь вам лучше понять, я написал пример, пожалуйста, нравится или не нравится, если это помогло или не помогло.

public class Vehicle
{
    public string VRM; 
}


class Program
{
    static void Main(string[] args)
    {

        var Reg = new Vehicle { VRM = "LP65 UGT" };
        var writer = new System.Xml.Serialization.XmlSerializer(typeof(Vehicle));
        var wfile = new System.IO.StreamWriter(@"C:\Myexample\NewVehicle.xml");
        writer.Serialize(wfile, Reg);
        wfile.Close();

        Console.WriteLine("Vehicle Reg is now written in xml format ");
        Console.ReadKey();






    }
}

Приведенный выше пример успешно выполнит запись в файл XML, убедитесь, что сначала вы создали папку на диске C Мой пример, а затем запустите приведенный выше пример, чтобы увидеть результат для себя и посмотреть, может ли он указать наНадеюсь, правильное направление.

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