Предположим, у меня есть XML-сериализуемый класс с именем Песня :
[Serializable]
class Song
{
public string Artist;
public string SongTitle;
}
Для экономии места (а также полуобфускация XML-файл), Я решил переименовать элементы xml:
[XmlRoot("g")]
class Song
{
[XmlElement("a")]
public string Artist;
[XmlElement("s")]
public string SongTitle;
}
Это приведет к выводу XML следующим образом:
<Song>
<a>Britney Spears</a>
<s>I Did It Again</s>
</Song>
Я также хочу переименовать / переназначить имя класса / объекта,Скажем, в приведенном выше примере я хочу переименовать класс Song в g .Чтобы результирующий xml выглядел так:
<g>
<a>Britney Spears</a>
<s>I Did It Again</s>
</g>
Можно ли переименовать имена классов с помощью атрибутов xml ?
Я не хочусоздать / пройти DOM вручную, поэтому мне было интересно, можно ли это сделать с помощью декоратора.
Заранее спасибо!
ОБНОВЛЕНИЕ: Упс!На этот раз я действительно сделал это снова!Забыл упомянуть - я на самом деле сериализую список объектов Song в XML.
Вот код сериализации:
public static bool SaveSongs(List<Song> songs)
{
XmlSerializer serializer = new XmlSerializer(typeof(List<Song>));
using (TextWriter textWriter = new StreamWriter("filename"))
{
serializer.Serialize(textWriter, songs);
}
}
А вот вывод XML:
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfSong>
<Song>
<a>Britney Spears</a>
<s>Oops! I Did It Again</s>
</Song>
<Song>
<a>Rihanna</a>
<s>A Girl Like Me</s>
</Song>
</ArrayOfSong>
Очевидно, атрибут XmlRoot () не переименовывает объект в контексте списка.
Я что-то упустил?