Description:
XML is a well structured text file, we can store any kind structured data in XML file. In most of the times our applications demand us to maintain a structured data in XML or Database. C# class object is one of the well structured data. In dynamic applications, we can store and retrieve C# class object from XMl file as per our need. In this article I am going write C# code Convert C# Class Object to XML and Vice Versa.
Summary:
Convert C# Class Object to XML string using XmlSerializer
You can easily convert a C# Class Object into XML string using XmlSerializer and MemoryStream
using System; using System.Xml.Serialization; using System.IO; using System.Xml.Linq; namespace MorganUtil { public class UserDetail { public string UserName { get; set; } public string MailID { get; set; } } class Program { static void Main(string[] args) { UserDetail userDetail = new UserDetail { UserName = "Morgan", MailID = "[email protected]" }; string xmlString = ConvertObjectToXMLString(userDetail); // Save C# class object into Xml file XElement xElement = XElement.Parse(xmlString); xElement.Save(@"C:\UsersAdministratorDesktopuserDetail.xml"); } static string ConvertObjectToXMLString(object classObject) { string xmlString = null; XmlSerializer xmlSerializer = new XmlSerializer(classObject.GetType()); using (MemoryStream memoryStream = new MemoryStream()) { xmlSerializer.Serialize(memoryStream, classObject); memoryStream.Position = 0; xmlString = new StreamReader(memoryStream).ReadToEnd(); } return xmlString; } } }
Xml Output for single class object:
Xml Output for list of class object(List<UserDetail>): You will get below Xml data when you convert list of class object (List<UserDetail>) into Xml.
Convert XML string to C# Class Object using XmlSerializer
Use the below function to convert XML string into C# Class Object using XmlSerializer and StringReader.
static void Main(string[] args) { string xmlString = @"<UserDetail> <UserName>Morgan</UserName> <MailID>[email protected]</MailID> </UserDetail>"; //Note: you can also read xmlString from Xml file by using below code // XElement xmlObject = XElement.Load(@"C:\UsersAdministratorDesktopuserDetail.xml"); //string xmlString = xmlObject.ToString(); UserDetail userDetail = (UserDetail)ConvertXmlStringtoObject<UserDetail>(xmlString); } static T ConvertXmlStringtoObject<T>(string xmlString) { T classObject; XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); using (StringReader stringReader = new StringReader(xmlString)) { classObject = (T)xmlSerializer.Deserialize(stringReader); } return classObject; }
Thanks,
Morgan
Software Developer