激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - ASP.NET中XML轉JSON的方法實例

ASP.NET中XML轉JSON的方法實例

2019-12-09 13:33shichen2014 ASP.NET教程

這篇文章主要介紹了ASP.NET中XML轉JSON的方法,實例講述了XML轉json的原理與實現過程,具有一定的實用價值,需要的朋友可以參考下

本文實例講述了ASP.NETXMLJSON的方法,分享給大家供大家參考。具體如下:

一般在許多應用程序中都將數據存儲為XML的格式,而且會將數據以JSON的格式發送到客戶端以做進一步處理。要實現這一點,它們必須將XML格式轉換為JSON格式。

XML轉JSON代碼如下:

 

復制代碼代碼如下:
private static string XmlToJSON(XmlDocument xmlDoc)  
{  
    StringBuilder sbJSON = new StringBuilder();  
    sbJSON.Append("{ ");  
    XmlToJSONnode(sbJSON, xmlDoc.DocumentElement, true);  
    sbJSON.Append("}");  
    return sbJSON.ToString();  
}  
  
//  XmlToJSONnode:  Output an XmlElement, possibly as part of a higher array  
private static void XmlToJSONnode(StringBuilder sbJSON, XmlElement node, bool showNodeName)  
{  
    if (showNodeName)  
        sbJSON.Append("\\"" + SafeJSON(node.Name) + "\\": ");  
    sbJSON.Append("{");  
    // Build a sorted list of key-value pairs  
    //  where   key is case-sensitive nodeName  
    //          value is an ArrayList of string or XmlElement  
    //  so that we know whether the nodeName is an array or not.  
    SortedList childNodeNames = new SortedList();  
  
    //  Add in all node attributes  
    if( node.Attributes!=null)  
        foreach (XmlAttribute attr in node.Attributes)  
            StoreChildNode(childNodeNames,attr.Name,attr.InnerText);  
  
    //  Add in all nodes  
    foreach (XmlNode cnode in node.ChildNodes)  
    {  
        if (cnode is XmlText)  
            StoreChildNode(childNodeNames, "value", cnode.InnerText);  
        else if (cnode is XmlElement)  
            StoreChildNode(childNodeNames, cnode.Name, cnode);  
    }  
  
    // Now output all stored info  
    foreach (string childname in childNodeNames.Keys)  
    {  
        ArrayList alChild = (ArrayList)childNodeNames[childname];  
        if (alChild.Count == 1)  
            OutputNode(childname, alChild[0], sbJSON, true);  
        else  
        {  
            sbJSON.Append(" \\"" + SafeJSON(childname) + "\\": [ ");  
            foreach (object Child in alChild)  
                OutputNode(childname, Child, sbJSON, false);  
            sbJSON.Remove(sbJSON.Length - 2, 2);  
            sbJSON.Append(" ], ");  
        }  
    }  
    sbJSON.Remove(sbJSON.Length - 2, 2);  
    sbJSON.Append(" }");  
}  
  
//  StoreChildNode: Store data associated with each nodeName  
//                  so that we know whether the nodeName is an array or not.  
private static void StoreChildNode(SortedList childNodeNames, string nodeName, object nodeValue)  
{  
    // Pre-process contraction of XmlElement-s  
    if (nodeValue is XmlElement)  
    {  
        // Convert  <aa></aa> into "aa":null  
        //          <aa>xx</aa> into "aa":"xx"  
        XmlNode cnode = (XmlNode)nodeValue;  
        if( cnode.Attributes.Count == 0)  
        {  
            XmlNodeList children = cnode.ChildNodes;  
            if( children.Count==0)  
                nodeValue = null;  
            else if (children.Count == 1 && (children[0] is XmlText))  
                nodeValue = ((XmlText)(children[0])).InnerText;  
        }  
    }  
    // Add nodeValue to ArrayList associated with each nodeName  
    // If nodeName doesn't exist then add it  
    object oValuesAL = childNodeNames[nodeName];  
    ArrayList ValuesAL;  
    if (oValuesAL == null)  
    {  
        ValuesAL = new ArrayList();  
        childNodeNames[nodeName] = ValuesAL;  
    }  
    else  
        ValuesAL = (ArrayList)oValuesAL;  
    ValuesAL.Add(nodeValue);  
}  
  
private static void OutputNode(string childname, object alChild, StringBuilder sbJSON, bool showNodeName)  
{  
    if (alChild == null)  
    {  
        if (showNodeName)  
            sbJSON.Append("\\"" + SafeJSON(childname) + "\\": ");  
        sbJSON.Append("null");  
    }  
    else if (alChild is string)  
    {  
        if (showNodeName)  
            sbJSON.Append("\\"" + SafeJSON(childname) + "\\": ");  
        string sChild = (string)alChild;  
        sChild = sChild.Trim();  
        sbJSON.Append("\\"" + SafeJSON(sChild) + "\\"");  
    }  
    else  
        XmlToJSONnode(sbJSON, (XmlElement)alChild, showNodeName);  
    sbJSON.Append(", ");  
}  
  
// Make a string safe for JSON  
private static string SafeJSON(string sIn)  
{  
    StringBuilder sbOut = new StringBuilder(sIn.Length);  
    foreach (char ch in sIn)  
    {  
        if (Char.IsControl(ch) || ch == '\\'')  
        {  
            int ich = (int)ch;  
            sbOut.Append(@"\\u" + ich.ToString("x4"));  
            continue;  
        }  
        else if (ch == '\\"' || ch == '\\\\' || ch == '/')  
        {  
            sbOut.Append('\\\\');  
        }  
        sbOut.Append(ch);  
    }  
    return sbOut.ToString();  
}

 

希望本文所述對大家的asp.net程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人在线视频在线观看 | 欧美成人亚洲 | 欧美成人一区二区三区电影 | 成人久久久久久久久 | 黄色网址免费在线 | 97zyz成人免费视频 | 精品在线视频观看 | 黄色免费不卡视频 | 亚洲小视频在线观看,com | 欧美日韩国产中文字幕 | 国产免费看| 毛片免费一区二区三区 | 久久亚洲精品国产 | 成人在线观看免费高清 | 欧美日韩在线影院 | 成品片a免人视频 | 欧美一级特黄aaaaaaa什 | av在线免费在线观看 | 龙床上的呻吟高h | 日本黄色一级毛片 | 97黄色网 | 成年人激情在线 | 国产精品久久久久永久免费 | 依依成人精品视频 | 国产91九色在线播放 | 黄色毛片视频在线观看 | 久久精品性视频 | 久久久一区二区三区精品 | 久久久久久久国产视频 | 国产精品视频亚洲 | 黄色美女网站免费看 | 最近日本电影hd免费观看 | 牛牛热这里只有精品 | 狠狠操视频网站 | 91精品国产综合久久婷婷香蕉 | 亚洲一区二区三区日本久久九 | 国人精品视频在线观看 | 成人免费午夜视频 | 九色激情网 | 韩国19禁在线 | 精品一区在线视频 |