XmlRootAttribute : Xml Serialization « XML « C# / C Sharp






XmlRootAttribute

  

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; }
    }
}

           
         
    
  








Related examples in the same category

1.Serialize List of Objects
2.Use XmlSerializer
3.Set Xml Attribute when serilzation
4.Use XML Serialization with Custom Objects
5.Takes an XML file and exports the Object it holds
6.Converts an XML string to an object
7.Deserializes/Serializes an xml document back into an object
8.Deserialize with XmlSerializer
9.XmlSerializer Util
10.Serilize to Xml
11.Xml Serialization Helper
12.Xml Serialization Helper 2
13.Tiny Xml Serializer
14.Xml Serialization Manager