Дополнительно
Сериализация объекта в XML
У меня есть класс C#, который я унаследовал. Я успешно "создал" объект. Но мне нужно сериализовать объект в XML. Есть ли простой способ сделать это?
Похоже, что класс настроен на сериализацию, но я не уверен, как получить XML-представление. Определение моего класса выглядит следующим образом:
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.domain.com/test")]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.domain.com/test", IsNullable = false)]
public partial class MyObject
{
...
}
Вот что я думал сделать, но это не работает:
MyObject o = new MyObject();
// Set o properties
string xml = o.ToString();
Как получить XML-представление этого объекта?
262
15
Для сериализации XML необходимо использовать XmlSerializer. Ниже приведен пример фрагмента.
Я изменил мои, чтобы возвратить строку, а не использовать Реф переменной, как показано ниже.
Ее использования будет такой:
Следующие функции могут быть скопированы на любой объект, чтобы добавить XML-сохранить функцию, используя System.Xml пространства имен.
Расширение класса:
Использование:
Просто ссылки на пространство имен держа свой метод расширения в файл, который вы хотели бы использовать его и он'будете работать (в моем примере это будет:
используя примет вид myproj.Расширения;
)Обратите внимание, что если вы хотите сделать методом расширения, специфические для определенного класса(напр.,
Фу
), Вы можете заменить аргументT
в метод расширения, например.публичный статический строку сериализации(это ФОО значение){...}
Вы можете использовать функцию ниже, чтобы получить сериализованный XML из любого объекта.
Вы можете назвать это от клиента.
Я начну с копией ответа Бен Gripka:
Я использовал этот код раньше. Но реальность показала, что это решение является немного проблематичным. Как правило, большинство программистов просто сериализовать установки на сохранение и десериализации параметров нагрузки. Это оптимистичный сценарий. После сериализации ошибка, из-за некоторых причин, файл частично написано, XML-файл не является исчерпывающим и является недействительным. В результате десериализации XML-файле не работает и ваше приложение может произойти сбой на старте. Если файл не огромный, я предлагаю сначала сериализовать объект в
потоке MemoryStream
затем записать поток в файл. В этом случае особенно важно, если есть какие-то сложные пользовательские сериализации. Вы никогда не сможете испытать всех случаях.Десериализации в реальном мире сценарий следует считать с поврежденного файла сериализации, это иногда случается. Функция нагрузку, оказываемую на Бен Gripka нормально.
И это может быть обернут некоторых сценарий восстановления. Он подходит для файлов настройки и другие файлы, которые могут быть удалены в случае возникновения проблем.
Чтобы сериализовать объект, выполните следующие действия:
Также помните, что для работы XmlSerializer необходим конструктор без параметров.
Голосуют все вышеперечисленные ответы верны. Это просто простейший вариант:
Это'ы немного сложнее, чем вызвать метод toString метод класса, но не сильно.
Здесь'ы простой функции можно использовать для сериализации любого типа объекта. Она возвращает строку, содержащую сериализованного XML-содержимого:
Вот хороший учебник о том, как это сделать
В основном для этого следует использовать класс
System.Xml.Serialization.XmlSerializer
.Вы можете создавать и сохранять результат в виде XML-файла в нужное место.
мой рабочий код. Возвращает в utf8 XML позволяют пустого пространства.
Пример возвращает ответ API Яндекса платежных авизо адресу:
У меня есть простой способ, чтобы сериализовать объект в XML с помощью C#, он отлично работает и это'ы легко повторно использовать. Я знаю, что это старый нить, но я хотел, чтобы этот пост, потому что кто-то может найти это полезным.
Вот как я вызываю метод:
Вот это класс, что делает работу:
Примечание: поскольку эти методы расширения, они должны быть в статическом классе.
Или вы можете добавить этот метод к вашему объекту:
Здесь'ы базовый код, который поможет сериализация объектов C# в XML: