2010-12-02 2 views
5

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

Благодарим вас заранее!

+0

Вам повезло с любым из предложенных подходов? – 2010-12-04 04:15:27

+0

Да !. Я успешно использовал инструмент xsd для создания класса (мне пришлось внести пару изменений в их соответствие моим требованиям). – Grasshopper 2010-12-09 17:42:50

+0

http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx – Mou 2013-07-30 19:06:34

ответ

10

Вы можете использовать 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

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

Для простейших классов это довольно просто. Вы можете использовать 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».

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

Смежные вопросы