Friday, March 22, 2013

Serialize/Deserialize XML from Class


Class File :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
namespace WindowsFormsApplication2
{
    [Serializable]
    [XmlRoot(ElementName = "Person")]
    public class clsRoot
    {
        public clsRoot() { Address = new Address(); }
        [XmlElement("Name")]
        public string Name { getset; }
        [XmlElement("Job")]
        public string Job { getset; }
        public Address Address { getset; }
    }
    [Serializable]
    [XmlRoot(ElementName = "Address")]
    public class Address
    {
        public Address() { }       
        public Permanant Permanant { getset; }
        public Current Current { getset; }
    }
    [Serializable]
    [XmlRoot(ElementName = "Permanant")]
    public class Permanant
    {
        public Permanant() { }
        [XmlAttribute("Type")]
        public string Type { getset; }
        public string Address { getset; }
        public string City { getset; }
        public string State { getset; }
        public string PinCode { getset; }
    }
    [Serializable]
    [XmlRoot(ElementName = "Current")]
    public class Current
    {
        public Current() { }
        [XmlAttribute("Type")]
        public string Type { getset; }
        public string Address { getset; }
        public string City { getset; }
        public string State { getset; }
        public string PinCode { getset; }
    }
}
Form with Read/Write button
  private void Generate_Click(object sender, EventArgs e)
        {
            clsRoot clsRoot = new clsRoot();
            clsRoot.Name = "Ajay Patel";
            clsRoot.Job = "Software Developer";
            Address ADDr = new Address();
            Permanant PR = new Permanant();
            Current Cur = new Current();
            PR.Type = "Permanant";
            PR.Address = "Panchvati";
            PR.City = "Kalol";
            PR.State = "Gujarat";
            PR.PinCode = "382722";
            Cur.Type = "Current";
            Cur.Address = "Panchvati";
            Cur.City = "Kalol";
            Cur.State = "Gujarat";
            Cur.PinCode = "382722";
            ADDr.Permanant = PR;
            ADDr.Current = Cur;
            clsRoot.Address = ADDr;
            System.Xml.Serialization.XmlSerializer xmlSerl = new
               System.Xml.Serialization.XmlSerializer(clsRoot.GetType());
            StreamWriter SW = new StreamWriter(txtXML.Text);
            xmlSerl.Serialize(SW, clsRoot);
            SW.Close();
        }
        private void txtXML_MouseDoubleClick(object sender,
                                                            MouseEventArgs e)
        {
            FileDilog.ShowDialog();
            txtXML.Text = FileDilog.FileName;
        }
        private void txtRead_Click(object sender, EventArgs e)
        {
            clsRoot clsRoot = new clsRoot();
            XmlSerializer xmlSerl = new XmlSerializer(clsRoot.GetType());
            TextReader objTxtRead = new StreamReader(txtXML.Text);
            clsRoot = (clsRoot)xmlSerl.Deserialize(objTxtRead);
            objTxtRead.Close();
        }
XML :
xml version="1.0" encoding="utf-8"?>
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Name>Ajay Patel</Name>
  <Job>Software Developer</Job>
  <Address>
    <Permanant Type="Permanant">
      <Address>Panchvati</Address>
      <City>Kalol</City>
      <State>Gujarat</State>
      <PinCode>382722</PinCode>
    </Permanant>
    <Current Type="Current">
      <Address>Panchvati</Address>
      <City>Kalol</City>
      <State>Gujarat</State>
      <PinCode>382722</PinCode>
    </Current>
  </Address>
</Person>

No comments: