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:-
{"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 ?
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