麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 編程 > .NET > 正文

ASP.NET中XML轉(zhuǎn)JSON的方法實(shí)例

2024-07-10 13:28:16
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要介紹了ASP.NET中XML轉(zhuǎn)JSON的方法,實(shí)例講述了XML轉(zhuǎn)json的原理與實(shí)現(xiàn)過(guò)程,具有一定的實(shí)用價(jià)值,需要的朋友可以參考下
 
 

本文實(shí)例講述了ASP.NET中XML轉(zhuǎn)JSON的方法,分享給大家供大家參考。具體如下:

一般在許多應(yīng)用程序中都將數(shù)據(jù)存儲(chǔ)為XML的格式,而且會(huì)將數(shù)據(jù)以JSON的格式發(fā)送到客戶(hù)端以做進(jìn)一步處理。要實(shí)現(xiàn)這一點(diǎn),它們必須將XML格式轉(zhuǎn)換為JSON格式。

XML轉(zhuǎn)JSON代碼如下:

 

復(fù)制代碼代碼如下:
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();  
}

 

希望本文所述對(duì)大家的asp.net程序設(shè)計(jì)有所幫助。


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产在线观看免费视频软件 | 色播av在线 | 黑人一级片视频 | 天海翼无删减av三级在线观看 | 久久精品99北条麻妃 | 亚洲第一视频在线 | 1级片在线观看 | 午夜国产精品成人 | 成人免费一区二区三区视频网站 | 日本中文视频 | 99最新地址 | 综合网天天射 | 最新久久免费视频 | 成年人视频在线免费观看 | 国产三级国产精品国产普男人 | 黄色美女网站免费看 | 久草最新在线 | 久久综合入口 | 日韩电影一区二区三区 | 日本在线观看视频网站 | 欧美成人午夜一区二区三区 | 亚洲网站免费 | 久久久久久久99 | 特片网久久 | 91麻豆精品国产91久久久无需广告 | 综合网日日天干夜夜久久 | 一级成人免费 | 黄色片在线播放 | 久久久久久久久久久久久九 | 成人免费乱码大片a毛片视频网站 | 黄色一级视频 | 精品一区二区三区免费毛片 | 亚洲3atv精品一区二区三区 | 日韩欧美精品中文字幕 | 毛片视频网站 | 日本a∨精品中文字幕在线 被啪羞羞视频在线观看 | 久久久久北条麻妃免费看 | www.mitao| 久久亚洲精品久久国产一区二区 | 成人福利免费在线观看 | 在线播放免费av |