Как сериализовать класс, созданный из XSD, в XML

#c# #xml #serialization #xsd

#c# #xml #сериализация #xsd

Вопрос:

Я создал XSD-файл из Visual Studio и могу также сгенерировать образец XML, но моя цель — использовать этот XSD для создания XML-файла во время выполнения.

Я использовал XSD.exe сгенерировать класс из моего XSD-файла, а затем создать программу для заполнения объекта из «класса». Как я могу сериализовать объект в XML-файл?

Комментарии:

1. msdn.microsoft.com/en-us/library/ms731073.aspx

Ответ №1:

Оба этих примера оставляют поток открытым, а XmlFormatter является частью библиотек BizTalk, поэтому XmlSerializer был бы более подходящим:

 using (Stream stream = File.Open(fileName, FileMode.Create))
{
    XmlSerializer serializer = new XmlSerializer(typeof(MyObject));
    serializer.Serialize(stream, MyObject);
    stream.Flush();
}
  

Ответ №2:

Когда вы создали классы для сериализации и десериализации Xml-файла с помощью XSD.exe инструмент, с помощью которого вы можете записывать свои экземпляры обратно в файлы..

Сериализация! (Архив)

   Stream stream = File.Open(filename, FileMode.Create);
  XmlFormatter formatter = new XmlFormatter (typeof(XmlObjectToSerialize));
  formatter.Serialize(stream, xmlObjectToSerialize);
  stream.Flush();
  

Комментарии:

1. Ах, извините, да. Я выбрал двоичный форматировщик! Но XmlFormatter тоже работает! Видел ответ @KenF.

Ответ №3:

Двоичный формат является двоичным, используйте версию XML для XML:

 XmlFormatter serializer = new XmlFormatter(typeof(MyObject));
serializer.Serialize(stream, object1);
  

Комментарии:

1. Я почти уверен, что вы имеете в виду XmlSerializer ?

2. должен быть System.Xml.Serialization. XmlSerializer вместо XmlFormatter, как указал Джастин