Как создать сериализуемый класс C# из XML-файла
Я довольно новичок в XML в .net. в рамках моей задачи мне нужно создать класс, который может быть сериализован в XML. У меня есть пример XML-файла со всеми тегами (класс должен производить XML, подобный образцу XML-файла). как лучше всего создать класс из XML-файла?
Заранее спасибо!!
3 ответов:
Вы можете использовать XSD.exe, чтобы создать .cs-файл от .XML. http://msdn.microsoft.com/en-us/library/x6c1kb0s%28VS.71%29.aspx
В командной строке:
xsd myFile.xml xsd myFile.xsdПервая строка будет генерировать файл определения схемы (xsd), второй файл должен генерировать.cs-файл. Я не уверен, что синтаксис является точным, но это должно помочь вам начать.
Работа в обратном направлении может помочь-сначала создайте свой класс, затем сериализуйте и посмотрите, что вы получите.
Для простейших классов это на самом деле довольно легко. Вы можете использовать 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". Вы можете взглянуть и посмотреть, что вы получите. В обратном случае можно использовать сериализатор.Десериализовать, чтобы создать экземпляр класса из "c:\temp\class.XML".
Вы можете изменить поведение сериализации, и иметь дело с неожиданными узлами и т. д.-взгляните на страницу XmlSerializer MSDN, например.
Вот хороший пример того, как сериализовать/десериализовать объект. http://sharpertutorials.com/serialization/
Comments