c# - 序列化 : Change the name of the root node without changing the class name

标签 c# .net xml xml-serialization ixmlserializable

目标

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

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

问题

根节点派生自实现 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();
    }

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

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

问题

是否有一个属性、一个我可以覆盖的属性或任何东西来获得我想要的效果(除了更改类名之外)?

谢谢!

感谢 Frederik 解决!

由于这个问题在我对@Frederik Gheysel 的回答的评论中得到了某种程度的回答,所以我想我会把它放在这里,这样它就不会被埋没。

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

例子:

[XmlRoot("Template")]
public class Item : IXmlSerializable
{
   //Item's properties
}

最佳答案

检查XmlRootAttribute类。

关于c# - 序列化 : Change the name of the root node without changing the class name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3620390/

相关文章:

c# - JSON调用C#类方法

c# - 将数据分组到单列并合并另一列

java - .NET 的 OS X 端口如何避免 Java 应用程序的非 native GUI 外观?

c# - 您可以将旧版本的 xml 反序列化为更新的结构吗

c# - 是否有可能获得一个 Action 中的语句数量或确定它是否有空体?

c# - Log4net 刚刚停止工作,知道原因,但不知道如何修复

.net - SpecRun.SpecFlow 1.2.0 与 UAP 不兼容,Version=v10.0

.net - 如何在VB.Net中对System.Collections.Generic.List进行排序?

java - 将 JSTL 包含到 Maven 项目中

java - 如何将集合包装在单个父标签中