Как создать сериализуемый класс C # из файла XML - PullRequest
5 голосов
/ 03 декабря 2010

Я довольно новичок в XML в .net.В рамках моей задачи мне нужно создать класс, который можно сериализовать в XML.У меня есть образец XML-файла со всеми тегами (класс должен производить XML, похожий на образец XML-файла).Каков наилучший подход для создания класса из файла XML?

Заранее спасибо !!

Ответы [ 3 ]

10 голосов
/ 03 декабря 2010

Вы можете использовать XSD.exe для создания файла .cs из .xml.http://msdn.microsoft.com/en-us/library/x6c1kb0s%28VS.71%29.aspx

В командной строке:

xsd myFile.xml
xsd myFile.xsd

В первой строке будет создан файл определения схемы (xsd), во втором файле должен быть создан файл .cs.Я не уверен, точен ли синтаксис, но он должен помочь вам начать работу.

4 голосов
/ 03 декабря 2010

Работа в обратном направлении может помочь - сначала создайте свой класс, затем сериализуйте и посмотрите, что вы получите.

Для самых простых классов это на самом деле довольно просто. Вы можете использовать XmlSerializer для сериализации, например:

namespace ConsoleApplication1
{
    public class MyClass
    {
        public string SomeProperty
        {
            get;
            set;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(MyClass));
            TextWriter writer = new StreamWriter(@"c:\temp\class.xml");

            MyClass firstInstance = new MyClass();
            firstInstance.SomeProperty = "foo"; // etc

            serializer.Serialize(writer, firstInstance);
            writer.Close();

            FileStream reader = new FileStream(@"c:\temp\class.xml", FileMode.Open);

            MyClass secondInstance = (MyClass)serializer.Deserialize(reader);

            reader.Close();
        }
    }
}

Это запишет сериализованное представление вашего класса в XML в "c: \ temp \ class.xml". Вы можете посмотреть и посмотреть, что вы получите. И наоборот, вы можете использовать serializer.Deserialize для создания экземпляра класса из "c: \ temp \ class.xml".

Вы можете изменить поведение сериализации, работать с неожиданными узлами и т. Д. - посмотрите страницу MSDN XmlSerializer , например.

0 голосов
/ 03 декабря 2010

Вот хороший пример, как сериализовать / десериализовать объект.http://sharpertutorials.com/serialization/

...