Я создаю оболочку API, которая получает ответ API и преобразует его в объекты POCO. Сейчас у меня есть тест, который следует за этой последовательностью действий:Сериализация объекта C# с дополнительными и разными тегами элементов
- Создать объект с именами и значениями XML-элементов.
- Сериализовать этот объект в формате XML.
- Преобразуйте дерево XML в реальный объект через мой конвертер.
- Утверждение, если значения внутри моего нового объекта как ожидалось.
У меня есть следующий класс помощника, который представляет собой шоу объект:
class TestShow {
public string id { get; set; }
public string IMDB_ID { get; set; }
public string Language { get; set; }
}
сериализатором:
var serializer = new XmlSerializer(show.GetType());
string xml;
using (var writer = new StringWriter()) {
serializer.Serialize(writer, show);
xml = writer.ToString();
}
Однако, когда я сериализации это XML я получаю этот результат:
<?xml version="1.0" encoding="utf-16"?>
<TestShow xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<id>76290</id>
<IMDB_ID>tt0285331</IMDB_ID>
<Language>en</Language>
</TestShow>
Желаемый результат:
<Data>
<Series>
<id>76290</id>
<IMDB_ID>tt0285331</IMDB_ID>
<Language>en</Language>
</Series>
</Data>
Это показывает две проблемы:
- Имя
TestShow
должно быть изменено наSeries
. Есть ли простой способ сделать это, или я должен просто изменить имя моего класса? - Существует верхняя коллекция под названием
Data
. Как бы добавить это?
Что serialiser вы используете? –
@SamLeach: Я добавил сериализатор. Это стандартный 'XmlSerializer'. –
Используйте атрибуты, см. Мой ответ ниже. –