Как я могу переименовать XML-корневой ArrayOfElement в C #? - PullRequest
0 голосов
/ 17 декабря 2011

У меня есть сериализуемый класс:

[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".В чем разница?

1 Ответ

3 голосов
/ 17 декабря 2011

Единственный способ, которым я смог найти это в прошлом, - это создать простой объект-оболочку с атрибутом XmlRoot и использовать его вместо вашего Списка.

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

Может быть более стандартный способ добиться этого, но я знаю, что это работает каждый раз.

...