假设我有一个名为的 XML 可序列化类Song:
[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 to g。因此生成的 xml 应该如下所示:
<g>
<a>Britney Spears</a>
<s>I Did It Again</s>
</g>
是否可以重命名类名通过 xml 属性?
我不想手动创建/遍历 DOM,所以我想知道是否可以通过装饰器来实现。
我实际上正在序列化 XML 中的 Song 对象列表。
这是序列化代码:
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()属性不会重命名列表上下文中的对象。
我错过了什么吗?