最佳答案
假设我有一个名为 歌的 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>
我还想重命名/重映射类/对象的名称。例如,在上面的示例中,我希望将类 歌重命名为
<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 ()属性不会在列表上下文中重命名对象。
我错过了什么吗?