假设我有一个名为Song的可序列化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-attributes重命名类名?
我不想手动创建/遍历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()属性不会在列表上下文中重命名该对象。
我想念什么吗?