Convert Object to XML Document generic method

Convert Object to XML Document genric methode

Some time we need to create the XML document to get or post from service, so every time instead of creating the document we will create the generic method to generate the XML document in object and list of objects.
 
For that here is the code for single object
 
  1. public XmlDocument ConvertObjectToXML<T>(T objectToConvert) where T : class  
  2. {  
  3.      XmlDocument doc = new XmlDocument();  
  4.   
  5.      Type sourceType = objectToConvert.GetType();  
  6.   
  7.      XmlElement root = doc.CreateElement(sourceType.Name + "s");  
  8.      XmlElement rootChild = doc.CreateElement(sourceType.Name);  
  9.   
  10.      PropertyInfo[] sourceProperties = sourceType.GetProperties();  
  11.      foreach (PropertyInfo pi in sourceProperties)  
  12. {  
  13. if (pi.GetValue(objectToConvert, null) != null)  
  14. {  
  15.      XmlElement child = doc.CreateElement(pi.Name);  
  16.      child.InnerText = Convert.ToString(pi.GetValue(objectToConvert, null));  
  17.      rootChild.AppendChild(child);  
  18. }  
  19. }  
  20.   
  21.     root.AppendChild(rootChild);  
  22.     doc.AppendChild(root);  
  23.   
  24. return doc;  
  25.   
  26. }  
  27.   
  28.     for List of objects  
  29.     public List<XmlElement> ConvertObjectToXML<T>         (List<T> lstObjectToConvert, XmlDocument xDoc) where T : class  
  30. {  
  31.     List<XmlElement> root = new List<XmlElement>();  
  32.     if (lstObjectToConvert.Count > 0)  
  33. {  
  34.   
  35. for (int i = 0; i < lstObjectToConvert.Count; i++)  
  36. {  
  37.      T objectToConvert = lstObjectToConvert[i];  
  38.   
  39.      XmlElement rootChild = xDoc.CreateElement(lstObjectToConvert[0].GetType().Name);  
  40.   
  41.      Type sourceType = objectToConvert.GetType();  
  42.      PropertyInfo[] sourceProperties = sourceType.GetProperties();  
  43. foreach (PropertyInfo pi in sourceProperties)  
  44. {  
  45.    if (pi.GetValue(objectToConvert, null) != null)  
  46. {  
  47.      XmlElement child = xDoc.CreateElement(pi.Name);  
  48.    if (pi.ToString().Contains("System.Collections.Generic.List"))  
  49. {  
  50.   
  51.    if (pi.GetValue(objectToConvert, null).GetType() == typeof(List<Address>))  
  52. {  
  53.     List<Address> lstAddress = (List<Address>)pi.GetValue(objectToConvert, null);  
  54.     List<XmlElement> rootChild1 = ConvertObjectToXML<Address>(lstAddress, xDoc);  
  55.   if (rootChild1 != null)  
  56. {  
  57. foreach (XmlElement item in rootChild1)  
  58. {  
  59.      child.AppendChild(item);  
  60. }  
  61. }  
  62. }  
  63.   
  64.   
  65. }  
  66. else  
  67. {  
  68.      child.InnerText = Convert.ToString(pi.GetValue(objectToConvert, null));  
  69.   
  70. }  
  71.      rootChild.AppendChild(child);  
  72.   
  73. }  
  74. }  
  75.      root.Add(rootChild);  
  76. }  
  77.   
  78. }  
  79.      return root;  
  80.   
  81.   
  82. }