以下有两个类,其中CartItem类的数组是ShoppingCart类的一个公共字段,请问怎样使用XMLSerializer序列化ShoppingCart类啊
public class ShoppingCart
{
public string UserName;
public string CreditCardNumber;
public CartItem[] CartItems;
public ShoppingCart()
{
}
}
public class CartItem
{
public string ProductName;
public decimal ProductPrice;
public CartItem(string productName,decimal productPrice)
{
this.ProductName = productName;
this.ProductPrice = productPrice;
}
}
------解决方案--------------------------------------------------------
- C# code
using System;using System.Collections.Generic;using System.Text;using System.IO;using System.Xml;using System.Xml.Serialization;namespace XMLSerializer{ class Program { static void Main(string[] args) { CartItem[] items = new CartItem[]{new CartItem("商品1",123.45m),new CartItem("商品2",678.90m)}; ShoppingCart cart = new ShoppingCart(); cart.UserName = "jeremyyang"; cart.CreditCardNumber = "secret"; cart.CartItems = items; XmlSerializer serializer = new XmlSerializer(typeof(XMLSerializer.ShoppingCart)); TextWriter writer = new StreamWriter(@"D:\123.xml"); serializer.Serialize(writer, cart); writer.Close(); } } [System.Xml.Serialization.XmlTypeAttribute] [System.Xml.Serialization.XmlRootAttribute] public class ShoppingCart { [XmlElement] public string UserName; [XmlElement] public string CreditCardNumber; [XmlArrayItem] public CartItem[] CartItems; public ShoppingCart() { } } [System.Xml.Serialization.XmlTypeAttribute] public class CartItem { [XmlAttribute] public string ProductName; [XmlAttribute] public decimal ProductPrice; public CartItem(string productName, decimal productPrice) { this.ProductName = productName; this.ProductPrice = productPrice; } //注意 XmlSerializer 必须要有个无参的构造函数 public CartItem() { } } }