一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

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

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

一般在許多應(yīng)用程序中都將數(shù)據(jù)存儲(chǔ)為XML的格式,而且會(huì)將數(shù)據(jù)以JSON的格式發(fā)送到客戶端以做進(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("http://"" + SafeJSON(node.Name) + "http://": "); 
    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) + "http://": [ "); 
            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("http://"" + SafeJSON(childname) + "http://": "); 
        sbJSON.Append("null"); 
    } 
    else if (alChild is string) 
    { 
        if (showNodeName) 
            sbJSON.Append("http://"" + SafeJSON(childname) + "http://": "); 
        string sChild = (string)alChild; 
        sChild = sChild.Trim(); 
        sbJSON.Append("http://"" + SafeJSON(sChild) + "http://""); 
    } 
    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(@"http://u" + ich.ToString("x4")); 
            continue; 
        } 
        else if (ch == '//"' || ch == '////' || ch == '/') 
        { 
            sbOut.Append('////'); 
        } 
        sbOut.Append(ch); 
    } 
    return sbOut.ToString(); 
}

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

AspNet技術(shù)ASP.NET中XML轉(zhuǎn)JSON的方法實(shí)例,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产精品福利一区二区 | 91成人在线 | 国产精品国产午夜免费福利看 | 精品一久久 | 久久国产精品夜色 | 国产亚洲精品国产福利在线观看 | 亚洲一区二区三区影院 | 亚洲成在人线中文字幕 | 国产成人+综合亚洲+天堂 | 国产精品视频免费视频 | 视频一区 国产 | 国产精品一区二区不卡 | 亚洲大色堂 | 一区二区在线观看高清 | 伊人久久99 | 国产成人亚洲精品2020 | 中文字幕一二三区乱码老 | 亚洲成人手机在线观看 | 色播在线播放 | 无遮挡一级毛片呦女视频 | 一区二区三区免费在线视频 | 黄网站免费在线观看 | 亚洲酒色1314狠狠做 | 97视频在线观看视频在线精品 | 五月天婷婷一区二区三区久久 | 国产精品自产拍视频观看 | 欧美特黄一片aa大片免费看 | 精品视频一区二区三三区四区 | 九九综合九九综合 | 久久久网久久久久合久久久久 | 欧美日韩一二三区 | 日韩国产一区二区 | 国产91亚洲精品 | 日本高清中文字幕一区二区三区a | 很黄很暴力深夜爽爽无遮挡 | 黄色视品 | 色婷婷99综合久久久精品 | 99视频免费播放 | 亚色视频在线观看 | 六月婷婷七月丁香 | 微拍秒拍福利一区二区 |