How to convert JSON to XML or XML to JSON?

后端 未结 13 1366
借酒劲吻你
借酒劲吻你 2020-11-22 05:43

I started to use Json.NET to convert a string in JSON format to object or viceversa. I am not sure in the Json.NET framework, is it possible to convert a string in JSON to X

13条回答
  •  佛祖请我去吃肉
    2020-11-22 06:11

    Try this function. I just wrote it and haven't had much of a chance to test it, but my preliminary tests are promising.

    public static XmlDocument JsonToXml(string json)
    {
        XmlNode newNode = null;
        XmlNode appendToNode = null;
        XmlDocument returnXmlDoc = new XmlDocument();
        returnXmlDoc.LoadXml("");
        XmlNode rootNode = returnXmlDoc.SelectSingleNode("Document");
        appendToNode = rootNode;
    
        string[] arrElementData;
        string[] arrElements = json.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;
    }
    

提交回复
热议问题