public class Books { [XmlElement("Book")] public List
BookList; } public class Book { [XmlAttribute] public string Title; [XmlAttribute] public string Description; [XmlAttribute] public string Author; [XmlAttribute] public string Publisher; } class Program { static void Main() { var books = new Books { BookList = new List (new[] { new Book { Title = "t1", Description = "d1" }, new Book { Author = "a2", Description = "d2" }, new Book { Author = "a3", Title = "t3", Publisher = "p3" }, }) }; var serializer = new XmlSerializer(books.GetType()); serializer.Serialize(Console.Out, books); } } И если вы хотите удалить пространство имен из корневого узла:
var namespaces = new XmlSerializerNamespaces(); namespaces.Add(string.Empty, string.Empty); serializer.Serialize(Console.Out, books, namespaces);
Также я бы рекомендовал вам использовать свойства вместо полей / g1] в ваших классах моделей для лучшего инкапсуляции:
public class Books { [XmlElement("Book")] public List
BookList { get; set; } }