Click here to Skip to main content
15,884,472 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
Dear friends
i have some values in json format and i want to convert it in xml format and
import it into my database
my json is as under:-
JavaScript
{"Header":{"Time":"2015-03-12T03:02:05-07:00","ReportName":"TrialBalance","ReportBasis":"Accrual","StartPeriod":"2015-03-12","EndPeriod":"2015-03-12","Currency":"INR","Option":[{"Name":"NoReportData","Value":"false"}]},"Columns":{"Column":[{"ColTitle":"","ColType":"Account"},{"ColTitle":"Debit","ColType":"Money"},{"ColTitle":"Credit","ColType":"Money"}]},"Rows":{"Row":[{"ColData":[{"value":"Punjab national bank","id":"57"},{"value":"503300.00"},{"value":""}]},{"ColData":[{"value":"Accounts Receivable (Debtors)","id":"63"},{"value":"0.00"},{"value":""}]},{"ColData":[{"value":"Accounts Payable (Creditors)","id":"62"},{"value":""},{"value":"100.00"}]},{"ColData":[{"value":"standard chartered cc","id":"69"},{"value":""},{"value":"0.00"}]},{"ColData":[{"value":"Opening Balance Equity","id":"56"},{"value":""},{"value":"500000.00"}]},{"ColData":[{"value":"Accounting Services Income","id":"10"},{"value":""},{"value":"4000.00"}]},{"ColData":[{"value":"Bookkeeping Services Income","id":"13"},{"value":""},{"value":"1800.00"}]},{"ColData":[{"value":"Contracted Services","id":"19"},{"value":"1600.00"},{"value":""}]},{"ColData":[{"value":"Dues and Subscriptions","id":"21"},{"value":"1000.00"},{"value":""}]},{"Summary":{"ColData":[{"value":"TOTAL"},{"value":"505900.00"},{"value":"505900.00"}]},"type":"Section","group":"GrandTotal"}]}}


iam using following C# function to convert json to xml but it is not converting it
in proper format please help me to find out what iam missing ?

C#
public static XmlDocument JsonToXml(string json)
       {
           XmlNode newNode = null;
           XmlNode appendToNode = null;
           XmlDocument returnXmlDoc = new XmlDocument();
           returnXmlDoc.LoadXml("<Document />");
           XmlNode rootNode = returnXmlDoc.SelectSingleNode("Document");
           appendToNode = rootNode;

           string[] arrElementData;
           string str = json;
           str = str.Replace("{", "{\r");
           str = str.Replace("[", "[\r");
           str = str.Replace("}", "\r}\r");
           str = str.Replace(",", ",\r");
           str = str.Replace("]", "\r]\r");

           string[] arrElements = str.Split('\r');
           foreach (string element in arrElements)
           {
               string processElement = element.Replace("\r", "").Replace("\n", "").Replace("\t", "").Trim();
               if ((processElement.IndexOf("}") > -1 || processElement.IndexOf("]") > -1) &&
                   appendToNode != rootNode)
               {
                   appendToNode = appendToNode.ParentNode;
               }
               else if (processElement.IndexOf("[") > -1)
               {
                   processElement = processElement.Replace(":", "").Replace("[", "").Replace("\"", "").Trim();
                   newNode = returnXmlDoc.CreateElement(processElement);
                   appendToNode.AppendChild(newNode);
                   appendToNode = newNode;
               }
               else if (processElement.IndexOf("{") > -1 && processElement.IndexOf(":") > -1)
               {
                   processElement = processElement.Replace(":", "").Replace("{", "").Replace("\"", "").Trim();
                   newNode = returnXmlDoc.CreateElement(processElement);
                   appendToNode.AppendChild(newNode);
                   appendToNode = newNode;
               }
               else
               {
                   if (processElement.IndexOf(":") > -1)
                   {
                       arrElementData = processElement.Replace(": \"", ":").Replace("\",", "").Replace("\"", "").Split(':');
                       newNode = returnXmlDoc.CreateElement(arrElementData[0]);
                       for (int i = 1; i < arrElementData.Length; i++)
                       { newNode.InnerText += arrElementData[i]; }
                       appendToNode.AppendChild(newNode);
                   }
               }
           }

           return returnXmlDoc;
       }

the function is not returning a proper XML Format
Posted
Updated 12-Mar-15 20:53pm
v5
Comments
Sinisa Hajnal 13-Mar-15 2:57am    
Can you use JSON.NET library? Its free: http://www.newtonsoft.com/json/help/html/ConvertJsonToXml.htm

1 solution

 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900