如何在c#中重命名XML根ArrayOfElement ?

本文关键字:XML ArrayOfElement 重命名 | 更新日期: 2023-09-27 18:18:02

我有一个可序列化的类:

[XmlRoot(ElementName = "News"), XmlType("News")] // I tried many attributes...
public class News
{
    [XmlElement("Article")]
    public List<Article> Articles { get; set; }
}

和序列化方法:

public static void SerializeToXML(Object obj)
{
    XmlSerializer ser = new XmlSerializer(obj.GetType());
    ...
}

我想有第一个XML元素<News>,但它是<ArrayOfArticle>

注意,我发现了许多类似的答案,但似乎我有另一个问题…

如果我使用...XmlSerializer(typeof(News));而不是...obj.GetType(),一切都是好的。但是obj.GetType()有问题。它导致(ser.mapping).ElementName"ArrayOfArticle"。有什么区别呢?

如何在c#中重命名XML根ArrayOfElement ?

在过去,我能够找到做到这一点的唯一方法是创建一个简单的包装器对象,该对象用XmlRoot属性进行装饰,并使用它来代替您的List。

[XmlRoot("Articles")]
public class Articles : List<Article> { }

可能有一个更标准的方法来实现它,但我知道这每次都有效。