private XmlElement createElementFromTable(XmlDocument doc, CTable tb) { ArrayList flds = tb.GetTableFields(); XmlElement xmlObj = doc.CreateElement("OBJECT"); xmlObj.SetAttribute("name", tb.GetTableName()); foreach (CField f in flds) { XmlElement fld = doc.CreateElement("FIELD"); fld.SetAttribute("name", f.GetName()); String value = f.GetValue(); fld.InnerText = value; xmlObj.AppendChild(fld); } Hashtable hashOfArray = tb.GetChildHash(); foreach (String arrName in hashOfArray.Keys) { ArrayList arr = (ArrayList)hashOfArray[arrName]; XmlElement itm = doc.CreateElement("ITEMS"); itm.SetAttribute("name", arrName); xmlObj.AppendChild(itm); foreach (CTable t in arr) { //Recursive XmlElement o = createElementFromTable(doc, t); itm.AppendChild(o); } } return(xmlObj); }