using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Xml; using System.Xml.Serialization; public class MainClass { //new products object public static void Main() { XmlAttributes attrs = new XmlAttributes(); attrs.XmlElements.Add(new XmlElementAttribute("Book", typeof(BookProduct))); attrs.XmlElements.Add(new XmlElementAttribute("Product", typeof(Product))); XmlAttributeOverrides attrOver = new XmlAttributeOverrides(); attrOver.Add(typeof(Inventory), "InventoryItems", attrs); Product newProd = new Product(); BookProduct newBook = new BookProduct(); newProd.ProductID = 100; newProd.ProductName = "Product"; newProd.SupplierID = 10; newBook.ProductID = 101; newBook.ProductName = "New Product"; newBook.SupplierID = 10; newBook.ISBN = "123456789"; Product[] addProd = { newProd, newBook }; Inventory inv = new Inventory(); inv.InventoryItems = addProd; TextWriter tr = new StreamWriter("inventory.xml"); XmlSerializer sr = new XmlSerializer(typeof(Inventory), attrOver); sr.Serialize(tr, inv); tr.Close(); } } [System.Xml.Serialization.XmlRootAttribute()] public class Product { private int prodId; private string prodName; private int suppId; private int catId; private string qtyPerUnit; private Decimal unitPrice; private short unitsInStock; private short unitsOnOrder; private short reorderLvl; private bool discont; private int disc; [XmlAttributeAttribute(AttributeName = "Discount")] public int Discount { get { return disc; } set { disc = value; } } [XmlElementAttribute()] public int ProductID { get { return prodId; } set { prodId = value; } } [XmlElementAttribute()] public string ProductName { get { return prodName; } set { prodName = value; } } [XmlElementAttribute()] public int SupplierID { get { return suppId; } set { suppId = value; } } [XmlElementAttribute()] public int CategoryID { get { return catId; } set { catId = value; } } [XmlElementAttribute()] public string QuantityPerUnit { get { return qtyPerUnit; } set { qtyPerUnit = value; } } [XmlElementAttribute()] public Decimal UnitPrice { get { return unitPrice; } set { unitPrice = value; } } [XmlElementAttribute()] public short UnitsInStock { get { return unitsInStock; } set { unitsInStock = value; } } [XmlElementAttribute()] public short UnitsOnOrder { get { return unitsOnOrder; } set { unitsOnOrder = value; } } [XmlElementAttribute()] public short ReorderLevel { get { return reorderLvl; } set { reorderLvl = value; } } [XmlElementAttribute()] public bool Discontinued { get { return discont; } set { discont = value; } } } public class Inventory { private Product[] stuff; public Inventory() { } [XmlArrayItem("Prod", typeof(Product)), XmlArrayItem("Book", typeof(BookProduct))] public Product[] InventoryItems { get { return stuff; } set { stuff = value; } } } public class BookProduct : Product { private string isbnNum; public BookProduct() { } public string ISBN { get { return isbnNum; } set { isbnNum = value; } } }