代码之家  ›  专栏  ›  技术社区  ›  Brandon Boone

序列化:在不更改类名的情况下更改根节点的名称

  •  3
  • Brandon Boone  · 技术社区  · 14 年前

    目标

    取一个名为“item”的类,并将其序列化XML输出为:

    <Template><!--some properties --></Template>
    

    问题

    根节点是从实现IXML可序列化的类名派生的。

        // 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();
        }
    

    所以我最终得到的XML看起来像

    <Item><Template><!-- some properties --></Template></Item>
    

    问题

    是否有一个属性、一个我可以重写的属性,或者其他什么来获得我想要的效果(除了更改类名之外)?

    谢谢!

    决议感谢弗雷德里克!

    因为我对@frederik gheysels答案的评论中回答了这个问题,所以我想我应该把它放在这里,这样它就不会被埋起来。

    只需向类中添加一个xml root属性,这将更改根节点的输出xml。

    例子:

    [XmlRoot("Template")]
    public class Item : IXmlSerializable
    {
       //Item's properties
    }
    
    1 回复  |  直到 14 年前
        1
  •  6
  •   Frederik Gheysels    14 年前

    检查 XmlRootAttribute 班级。