序列化:更改根节点的名称而不更改类名

Bra*_*one 3 .net c# xml xml-serialization ixmlserializable

目标

获取名为"Item"的类并将其序列化XML输出为:

<Template><!--some properties --></Template>
Run Code Online (Sandbox Code Playgroud)

问题

根节点是从实现IXmlSerializable的类名派生的.

    // By the time I get here 'writer' already has a root node
    public void WriteXml(XmlWriter writer)
    {
        writer.WriteStartElement("Template");
         // write out the properties
        writer.WriteEndElement();
    }
Run Code Online (Sandbox Code Playgroud)

所以我最终看起来像是XML

<Item><Template><!-- some properties --></Template></Item>
Run Code Online (Sandbox Code Playgroud)

是否有属性,我可以覆盖的属性,或任何可以获得我想要的效果(除了更改类名)?

谢谢!

分辨率归功于弗雷德里克!

由于这个问题在我对@Frederik Gheysels回答的评论中有所回答,我想我会把它放在这里,所以它不会被埋没.

只需向类中添加XmlRoot属性,这将更改根节点的输出xml.

例:

[XmlRoot("Template")]
public class Item : IXmlSerializable
{
   //Item's properties
}
Run Code Online (Sandbox Code Playgroud)