Csharp/C Sharp by API/System.Xml.Serialization/XmlElementAttribute

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

mark XmlElementAttribute

<source lang="csharp">


using System; using System.Collections.Generic; using System.ruponentModel; 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; }
   }

}


 </source>