<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FC_Sharp%2FXML%2FXml_Serialization</id>
		<title>Csharp/C Sharp/XML/Xml Serialization - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FC_Sharp%2FXML%2FXml_Serialization"/>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/C_Sharp/XML/Xml_Serialization&amp;action=history"/>
		<updated>2026-04-30T03:02:51Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/C_Sharp/XML/Xml_Serialization&amp;diff=284&amp;oldid=prev</id>
		<title> в 15:31, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/C_Sharp/XML/Xml_Serialization&amp;diff=284&amp;oldid=prev"/>
				<updated>2010-05-26T15:31:18Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 15:31, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/C_Sharp/XML/Xml_Serialization&amp;diff=285&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/C_Sharp/XML/Xml_Serialization&amp;diff=285&amp;oldid=prev"/>
				<updated>2010-05-26T11:34:17Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Serialize List of Objects==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Runtime.Serialization.Formatters.Binary;&lt;br /&gt;
using System.Runtime.Serialization.Formatters.Soap;&lt;br /&gt;
using System.Xml.Serialization;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
[Serializable]&lt;br /&gt;
public class Radio {&lt;br /&gt;
    public bool hasTweeters;&lt;br /&gt;
    public bool hasSubWoofers;&lt;br /&gt;
    public double[] stationPresets;&lt;br /&gt;
    [NonSerialized]&lt;br /&gt;
    public string radioID = &amp;quot;002&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
[Serializable]&lt;br /&gt;
public class Car {&lt;br /&gt;
    public Radio theRadio = new Radio();&lt;br /&gt;
    public bool isHatchBack;&lt;br /&gt;
}&lt;br /&gt;
[Serializable, XmlRoot(Namespace = &amp;quot;http://www.yoursite.ru&amp;quot;)]&lt;br /&gt;
public class MyCar : Car {&lt;br /&gt;
    public MyCar(bool SkyWorthy, bool SeaWorthy) {&lt;br /&gt;
        canFly = SkyWorthy;&lt;br /&gt;
        canSubmerge = SeaWorthy;&lt;br /&gt;
    }&lt;br /&gt;
    public MyCar() { }&lt;br /&gt;
    [XmlAttribute]&lt;br /&gt;
    public bool canFly;&lt;br /&gt;
    [XmlAttribute]&lt;br /&gt;
    public bool canSubmerge;&lt;br /&gt;
}&lt;br /&gt;
class Program {&lt;br /&gt;
    static void Main(string[] args) {&lt;br /&gt;
        MyCar jbc = new MyCar();&lt;br /&gt;
        jbc.canFly = true;&lt;br /&gt;
        jbc.canSubmerge = false;&lt;br /&gt;
        jbc.theRadio.stationPresets = new double[] { 89.3, 105.1, 97.1 };&lt;br /&gt;
        jbc.theRadio.hasTweeters = true;&lt;br /&gt;
        BinaryFormatter binFormat = new BinaryFormatter();&lt;br /&gt;
        Stream fStream = new FileStream(&amp;quot;CarData.dat&amp;quot;,FileMode.Create, FileAccess.Write, FileShare.None);&lt;br /&gt;
        binFormat.Serialize(fStream, jbc);&lt;br /&gt;
        fStream.Close();&lt;br /&gt;
        fStream = File.OpenRead(&amp;quot;CarData.dat&amp;quot;);&lt;br /&gt;
        MyCar carFromDisk =(MyCar)binFormat.Deserialize(fStream);&lt;br /&gt;
        fStream.Close();&lt;br /&gt;
        SoapFormatter soapForamt = new SoapFormatter();&lt;br /&gt;
        fStream = new FileStream(&amp;quot;CarData.soap&amp;quot;,FileMode.Create, FileAccess.Write, FileShare.None);&lt;br /&gt;
        soapForamt.Serialize(fStream, jbc);&lt;br /&gt;
        fStream.Close();&lt;br /&gt;
        XmlSerializer xmlForamt = new XmlSerializer(typeof(MyCar),new Type[] { typeof(Radio), typeof(Car) });&lt;br /&gt;
        fStream = new FileStream(&amp;quot;CarData.xml&amp;quot;,FileMode.Create, FileAccess.Write, FileShare.None);&lt;br /&gt;
        xmlForamt.Serialize(fStream, jbc);&lt;br /&gt;
        fStream.Close();&lt;br /&gt;
        ArrayList myCars = new ArrayList();&lt;br /&gt;
        myCars.Add(new MyCar(true, true));&lt;br /&gt;
        myCars.Add(new MyCar(true, false));&lt;br /&gt;
        myCars.Add(new MyCar(false, true));&lt;br /&gt;
        myCars.Add(new MyCar(false, false));&lt;br /&gt;
        fStream = new FileStream(&amp;quot;CarCollection.xml&amp;quot;,FileMode.Create, FileAccess.Write, FileShare.None);&lt;br /&gt;
        xmlForamt = new XmlSerializer(typeof(ArrayList),new Type[] { typeof(MyCar), typeof(Car), typeof(Radio) });&lt;br /&gt;
        xmlForamt.Serialize(fStream, myCars);&lt;br /&gt;
        fStream.Close();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Set Xml Attribute when serilzation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.ruponentModel;&lt;br /&gt;
using System.Data;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Xml;&lt;br /&gt;
using System.Xml.Serialization;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
    public static void Main() {&lt;br /&gt;
        Product pd = new Product();&lt;br /&gt;
        pd.ProductID = 200;&lt;br /&gt;
        pd.CategoryID = 100;&lt;br /&gt;
        pd.Discontinued = false;&lt;br /&gt;
        pd.ProductName = &amp;quot;Serialize Objects&amp;quot;;&lt;br /&gt;
        pd.QuantityPerUnit = &amp;quot;6&amp;quot;;&lt;br /&gt;
        pd.ReorderLevel = 1;&lt;br /&gt;
        pd.SupplierID = 1;&lt;br /&gt;
        pd.UnitPrice = 1000;&lt;br /&gt;
        pd.UnitsInStock = 10;&lt;br /&gt;
        pd.UnitsOnOrder = 0;&lt;br /&gt;
        TextWriter tr = new StreamWriter(&amp;quot;serialprod.xml&amp;quot;);&lt;br /&gt;
        XmlSerializer sr = new XmlSerializer(typeof(Product));&lt;br /&gt;
        sr.Serialize(tr, pd);&lt;br /&gt;
        tr.Close();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
[System.Xml.Serialization.XmlRootAttribute()]&lt;br /&gt;
public class Product {&lt;br /&gt;
    private int prodId;&lt;br /&gt;
    private string prodName;&lt;br /&gt;
    private int suppId;&lt;br /&gt;
    private int catId;&lt;br /&gt;
    private string qtyPerUnit;&lt;br /&gt;
    private Decimal unitPrice;&lt;br /&gt;
    private short unitsInStock;&lt;br /&gt;
    private short unitsOnOrder;&lt;br /&gt;
    private short reorderLvl;&lt;br /&gt;
    private bool discont;&lt;br /&gt;
    private int disc;&lt;br /&gt;
    //added the Discount attribute&lt;br /&gt;
    [XmlAttributeAttribute(AttributeName = &amp;quot;Discount&amp;quot;)]&lt;br /&gt;
    public int Discount {&lt;br /&gt;
        get { return disc; }&lt;br /&gt;
        set { disc = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public int ProductID {&lt;br /&gt;
        get { return prodId; }&lt;br /&gt;
        set { prodId = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public string ProductName {&lt;br /&gt;
        get { return prodName; }&lt;br /&gt;
        set { prodName = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public int SupplierID {&lt;br /&gt;
        get { return suppId; }&lt;br /&gt;
        set { suppId = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public int CategoryID {&lt;br /&gt;
        get { return catId; }&lt;br /&gt;
        set { catId = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public string QuantityPerUnit {&lt;br /&gt;
        get { return qtyPerUnit; }&lt;br /&gt;
        set { qtyPerUnit = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public Decimal UnitPrice {&lt;br /&gt;
        get { return unitPrice; }&lt;br /&gt;
        set { unitPrice = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public short UnitsInStock {&lt;br /&gt;
        get { return unitsInStock; }&lt;br /&gt;
        set { unitsInStock = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public short UnitsOnOrder {&lt;br /&gt;
        get { return unitsOnOrder; }&lt;br /&gt;
        set { unitsOnOrder = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public short ReorderLevel {&lt;br /&gt;
        get { return reorderLvl; }&lt;br /&gt;
        set { reorderLvl = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public bool Discontinued {&lt;br /&gt;
        get { return discont; }&lt;br /&gt;
        set { discont = value; }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public class Inventory {&lt;br /&gt;
    private Product[] stuff;&lt;br /&gt;
    public Inventory() { }&lt;br /&gt;
    [XmlArrayItem(&amp;quot;Prod&amp;quot;, typeof(Product)),&lt;br /&gt;
    XmlArrayItem(&amp;quot;Book&amp;quot;, typeof(BookProduct))]&lt;br /&gt;
    public Product[] InventoryItems {&lt;br /&gt;
        get { return stuff; }&lt;br /&gt;
        set { stuff = value; }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class BookProduct : Product {&lt;br /&gt;
    private string isbnNum;&lt;br /&gt;
    public BookProduct() { }&lt;br /&gt;
    public string ISBN {&lt;br /&gt;
        get { return isbnNum; }&lt;br /&gt;
        set { isbnNum = value; }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use XML Serialization with Custom Objects ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Xml;&lt;br /&gt;
using System.Xml.Serialization;&lt;br /&gt;
[XmlRoot(&amp;quot;productCatalog&amp;quot;)]&lt;br /&gt;
class ProductCatalog {&lt;br /&gt;
    [XmlElement(&amp;quot;catalogName&amp;quot;)]&lt;br /&gt;
    public string CatalogName;&lt;br /&gt;
    [XmlElement(ElementName = &amp;quot;expiryDate&amp;quot;, DataType = &amp;quot;date&amp;quot;)]&lt;br /&gt;
    public DateTime ExpiryDate;&lt;br /&gt;
    [XmlArray(&amp;quot;products&amp;quot;)]&lt;br /&gt;
    [XmlArrayItem(&amp;quot;product&amp;quot;)]&lt;br /&gt;
    public Product[] Products;&lt;br /&gt;
    public ProductCatalog() { }&lt;br /&gt;
    public ProductCatalog(string catalogName, DateTime expiryDate) {&lt;br /&gt;
        this.CatalogName = catalogName;&lt;br /&gt;
        this.ExpiryDate = expiryDate;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class Product {&lt;br /&gt;
    [XmlElement(&amp;quot;productName&amp;quot;)]&lt;br /&gt;
    public string ProductName;&lt;br /&gt;
    [XmlElement(&amp;quot;productPrice&amp;quot;)]&lt;br /&gt;
    public decimal ProductPrice;&lt;br /&gt;
    [XmlElement(&amp;quot;inStock&amp;quot;)]&lt;br /&gt;
    public bool InStock;&lt;br /&gt;
    [XmlAttributeAttribute(AttributeName = &amp;quot;id&amp;quot;, DataType = &amp;quot;integer&amp;quot;)]&lt;br /&gt;
    public string Id;&lt;br /&gt;
    public Product() {}&lt;br /&gt;
    public Product(string productName, decimal productPrice) {&lt;br /&gt;
        this.ProductName = productName;&lt;br /&gt;
        this.ProductPrice = productPrice;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public class MainClass {&lt;br /&gt;
    private static void Main() {&lt;br /&gt;
        ProductCatalog catalog = new ProductCatalog(&amp;quot;New Catalog&amp;quot;, DateTime.Now.AddYears(1));&lt;br /&gt;
        Product[] products = new Product[2];&lt;br /&gt;
        products[0] = new Product(&amp;quot;Product 1&amp;quot;, 42.99m);&lt;br /&gt;
        products[1] = new Product(&amp;quot;Product 2&amp;quot;, 202.99m);&lt;br /&gt;
        catalog.Products = products;&lt;br /&gt;
        XmlSerializer serializer = new XmlSerializer(typeof(ProductCatalog));&lt;br /&gt;
        FileStream fs = new FileStream(&amp;quot;ProductCatalog.xml&amp;quot;, FileMode.Create);&lt;br /&gt;
        serializer.Serialize(fs, catalog);&lt;br /&gt;
        fs.Close();&lt;br /&gt;
        catalog = null;&lt;br /&gt;
        fs = new FileStream(&amp;quot;ProductCatalog.xml&amp;quot;, FileMode.Open);&lt;br /&gt;
        catalog = (ProductCatalog)serializer.Deserialize(fs);&lt;br /&gt;
        serializer.Serialize(Console.Out, catalog);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use XmlSerializer==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.ruponentModel;&lt;br /&gt;
using System.Data;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Xml;&lt;br /&gt;
using System.Xml.Serialization;&lt;br /&gt;
public class MainClass {      //new products object&lt;br /&gt;
    public static void Main() {&lt;br /&gt;
        Product newPd;&lt;br /&gt;
        FileStream f = new FileStream(&amp;quot;serialprod.xml&amp;quot;, FileMode.Open);&lt;br /&gt;
        XmlSerializer newSr = new XmlSerializer(typeof(Product));&lt;br /&gt;
        newPd = (Product)newSr.Deserialize(f);&lt;br /&gt;
        f.Close();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
[System.Xml.Serialization.XmlRootAttribute()]&lt;br /&gt;
public class Product {&lt;br /&gt;
    private int prodId;&lt;br /&gt;
    private string prodName;&lt;br /&gt;
    private int suppId;&lt;br /&gt;
    private int catId;&lt;br /&gt;
    private string qtyPerUnit;&lt;br /&gt;
    private Decimal unitPrice;&lt;br /&gt;
    private short unitsInStock;&lt;br /&gt;
    private short unitsOnOrder;&lt;br /&gt;
    private short reorderLvl;&lt;br /&gt;
    private bool discont;&lt;br /&gt;
    private int disc;&lt;br /&gt;
    [XmlAttributeAttribute(AttributeName = &amp;quot;Discount&amp;quot;)]&lt;br /&gt;
    public int Discount {&lt;br /&gt;
        get { return disc; }&lt;br /&gt;
        set { disc = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public int ProductID {&lt;br /&gt;
        get { return prodId; }&lt;br /&gt;
        set { prodId = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public string ProductName {&lt;br /&gt;
        get { return prodName; }&lt;br /&gt;
        set { prodName = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public int SupplierID {&lt;br /&gt;
        get { return suppId; }&lt;br /&gt;
        set { suppId = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public int CategoryID {&lt;br /&gt;
        get { return catId; }&lt;br /&gt;
        set { catId = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public string QuantityPerUnit {&lt;br /&gt;
        get { return qtyPerUnit; }&lt;br /&gt;
        set { qtyPerUnit = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public Decimal UnitPrice {&lt;br /&gt;
        get { return unitPrice; }&lt;br /&gt;
        set { unitPrice = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public short UnitsInStock {&lt;br /&gt;
        get { return unitsInStock; }&lt;br /&gt;
        set { unitsInStock = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public short UnitsOnOrder {&lt;br /&gt;
        get { return unitsOnOrder; }&lt;br /&gt;
        set { unitsOnOrder = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public short ReorderLevel {&lt;br /&gt;
        get { return reorderLvl; }&lt;br /&gt;
        set { reorderLvl = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public bool Discontinued {&lt;br /&gt;
        get { return discont; }&lt;br /&gt;
        set { discont = value; }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public class Inventory {&lt;br /&gt;
    private Product[] stuff;&lt;br /&gt;
    public Inventory() { }&lt;br /&gt;
    [XmlArrayItem(&amp;quot;Prod&amp;quot;, typeof(Product)),&lt;br /&gt;
    XmlArrayItem(&amp;quot;Book&amp;quot;, typeof(BookProduct))]&lt;br /&gt;
    public Product[] InventoryItems {&lt;br /&gt;
        get { return stuff; }&lt;br /&gt;
        set { stuff = value; }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class BookProduct : Product {&lt;br /&gt;
    private string isbnNum;&lt;br /&gt;
    public BookProduct() { }&lt;br /&gt;
    public string ISBN {&lt;br /&gt;
        get { return isbnNum; }&lt;br /&gt;
        set { isbnNum = value; }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==XmlRootAttribute==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.ruponentModel;&lt;br /&gt;
using System.Data;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Xml;&lt;br /&gt;
using System.Xml.Serialization;&lt;br /&gt;
public class MainClass {      //new products object&lt;br /&gt;
    public static void Main() {&lt;br /&gt;
        XmlAttributes attrs = new XmlAttributes();&lt;br /&gt;
        attrs.XmlElements.Add(new XmlElementAttribute(&amp;quot;Book&amp;quot;, typeof(BookProduct)));&lt;br /&gt;
        attrs.XmlElements.Add(new XmlElementAttribute(&amp;quot;Product&amp;quot;, typeof(Product)));&lt;br /&gt;
        XmlAttributeOverrides attrOver = new XmlAttributeOverrides();&lt;br /&gt;
        attrOver.Add(typeof(Inventory), &amp;quot;InventoryItems&amp;quot;, attrs);&lt;br /&gt;
        Product newProd = new Product();&lt;br /&gt;
        BookProduct newBook = new BookProduct();&lt;br /&gt;
        newProd.ProductID = 100;&lt;br /&gt;
        newProd.ProductName = &amp;quot;Product&amp;quot;;&lt;br /&gt;
        newProd.SupplierID = 10;&lt;br /&gt;
        newBook.ProductID = 101;&lt;br /&gt;
        newBook.ProductName = &amp;quot;New Product&amp;quot;;&lt;br /&gt;
        newBook.SupplierID = 10;&lt;br /&gt;
        newBook.ISBN = &amp;quot;123456789&amp;quot;;&lt;br /&gt;
        Product[] addProd = { newProd, newBook };&lt;br /&gt;
        Inventory inv = new Inventory();&lt;br /&gt;
        inv.InventoryItems = addProd;&lt;br /&gt;
        TextWriter tr = new StreamWriter(&amp;quot;inventory.xml&amp;quot;);&lt;br /&gt;
        XmlSerializer sr = new XmlSerializer(typeof(Inventory), attrOver);&lt;br /&gt;
        sr.Serialize(tr, inv);&lt;br /&gt;
        tr.Close();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
[System.Xml.Serialization.XmlRootAttribute()]&lt;br /&gt;
public class Product {&lt;br /&gt;
    private int prodId;&lt;br /&gt;
    private string prodName;&lt;br /&gt;
    private int suppId;&lt;br /&gt;
    private int catId;&lt;br /&gt;
    private string qtyPerUnit;&lt;br /&gt;
    private Decimal unitPrice;&lt;br /&gt;
    private short unitsInStock;&lt;br /&gt;
    private short unitsOnOrder;&lt;br /&gt;
    private short reorderLvl;&lt;br /&gt;
    private bool discont;&lt;br /&gt;
    private int disc;&lt;br /&gt;
    [XmlAttributeAttribute(AttributeName = &amp;quot;Discount&amp;quot;)]&lt;br /&gt;
    public int Discount {&lt;br /&gt;
        get { return disc; }&lt;br /&gt;
        set { disc = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public int ProductID {&lt;br /&gt;
        get { return prodId; }&lt;br /&gt;
        set { prodId = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public string ProductName {&lt;br /&gt;
        get { return prodName; }&lt;br /&gt;
        set { prodName = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public int SupplierID {&lt;br /&gt;
        get { return suppId; }&lt;br /&gt;
        set { suppId = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public int CategoryID {&lt;br /&gt;
        get { return catId; }&lt;br /&gt;
        set { catId = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public string QuantityPerUnit {&lt;br /&gt;
        get { return qtyPerUnit; }&lt;br /&gt;
        set { qtyPerUnit = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public Decimal UnitPrice {&lt;br /&gt;
        get { return unitPrice; }&lt;br /&gt;
        set { unitPrice = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public short UnitsInStock {&lt;br /&gt;
        get { return unitsInStock; }&lt;br /&gt;
        set { unitsInStock = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public short UnitsOnOrder {&lt;br /&gt;
        get { return unitsOnOrder; }&lt;br /&gt;
        set { unitsOnOrder = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public short ReorderLevel {&lt;br /&gt;
        get { return reorderLvl; }&lt;br /&gt;
        set { reorderLvl = value; }&lt;br /&gt;
    }&lt;br /&gt;
    [XmlElementAttribute()]&lt;br /&gt;
    public bool Discontinued {&lt;br /&gt;
        get { return discont; }&lt;br /&gt;
        set { discont = value; }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class Inventory {&lt;br /&gt;
    private Product[] stuff;&lt;br /&gt;
    public Inventory() { }&lt;br /&gt;
    [XmlArrayItem(&amp;quot;Prod&amp;quot;, typeof(Product)),&lt;br /&gt;
    XmlArrayItem(&amp;quot;Book&amp;quot;, typeof(BookProduct))]&lt;br /&gt;
    public Product[] InventoryItems {&lt;br /&gt;
        get { return stuff; }&lt;br /&gt;
        set { stuff = value; }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class BookProduct : Product {&lt;br /&gt;
    private string isbnNum;&lt;br /&gt;
    public BookProduct() { }&lt;br /&gt;
    public string ISBN {&lt;br /&gt;
        get { return isbnNum; }&lt;br /&gt;
        set { isbnNum = value; }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>