public class Books
{
[XmlElement("Book")]
public List<Book> 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<Book>(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);
}
}
如果你想從根節點刪除的命名空間:
public class Books
{
[XmlElement("Book")]
public List<Book> BookList { get; set; }
}
:
var namespaces = new XmlSerializerNamespaces();
namespaces.Add(string.Empty, string.Empty);
serializer.Serialize(Console.Out, books, namespaces);
另外我想你使用的properties代替fields在你的模型類更好的封裝推薦
你打我1分鐘;) – 2010-11-04 09:22:25
我不清楚上述解決方案如何工作,直到我看了下面的帖子:http://kjellsj.blogspot .com/2006/02/conditional-xml-serialization_08.html – Dean 2011-11-02 15:59:12
+1我從來不知道的最酷的東西:)剛剛解決了這個寶石特別粘滯的向後兼容性問題。 – 2013-09-12 09:17:56