国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

ASP.NET中XML轉JSON的方法

2019-11-17 01:49:12
字體:
來源:轉載
供稿:網友

asp.net中xml轉JSON的方法

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

XML轉JSON代碼

[csharp]view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. PRivatestaticstringXmlToJSON(XmlDocumentxmlDoc)
  2. {
  3. StringBuildersbJSON=newStringBuilder();
  4. sbJSON.Append("{");
  5. XmlToJSONnode(sbJSON,xmlDoc.DocumentElement,true);
  6. sbJSON.Append("}");
  7. returnsbJSON.ToString();
  8. }
  9. //XmlToJSONnode:OutputanXmlElement,possiblyaspartofahigherarray
  10. privatestaticvoidXmlToJSONnode(StringBuildersbJSON,XmlElementnode,boolshowNodeName)
  11. {
  12. if(showNodeName)
  13. sbJSON.Append("http://""+SafeJSON(node.Name)+"http://":");
  14. sbJSON.Append("{");
  15. //Buildasortedlistofkey-valuepairs
  16. //wherekeyiscase-sensitivenodeName
  17. //valueisanArrayListofstringorXmlElement
  18. //sothatweknowwhetherthenodeNameisanarrayornot.
  19. SortedListchildNodeNames=newSortedList();
  20. //Addinallnodeattributes
  21. if(node.Attributes!=null)
  22. foreach(XmlAttributeattrinnode.Attributes)
  23. StoreChildNode(childNodeNames,attr.Name,attr.InnerText);
  24. //Addinallnodes
  25. foreach(XmlNodecnodeinnode.ChildNodes)
  26. {
  27. if(cnodeisXmlText)
  28. StoreChildNode(childNodeNames,"value",cnode.InnerText);
  29. elseif(cnodeisXmlElement)
  30. StoreChildNode(childNodeNames,cnode.Name,cnode);
  31. }
  32. //Nowoutputallstoredinfo
  33. foreach(stringchildnameinchildNodeNames.Keys)
  34. {
  35. ArrayListalChild=(ArrayList)childNodeNames[childname];
  36. if(alChild.Count==1)
  37. OutputNode(childname,alChild[0],sbJSON,true);
  38. else
  39. {
  40. sbJSON.Append("http://""+SafeJSON(childname)+"http://":[");
  41. foreach(objectChildinalChild)
  42. OutputNode(childname,Child,sbJSON,false);
  43. sbJSON.Remove(sbJSON.Length-2,2);
  44. sbJSON.Append("],");
  45. }
  46. }
  47. sbJSON.Remove(sbJSON.Length-2,2);
  48. sbJSON.Append("}");
  49. }
  50. //StoreChildNode:StoredataassociatedwitheachnodeName
  51. //sothatweknowwhetherthenodeNameisanarrayornot.
  52. privatestaticvoidStoreChildNode(SortedListchildNodeNames,stringnodeName,objectnodeValue)
  53. {
  54. //Pre-processcontractionofXmlElement-s
  55. if(nodeValueisXmlElement)
  56. {
  57. //Convert<aa></aa>into"aa":null
  58. //<aa>xx</aa>into"aa":"xx"
  59. XmlNodecnode=(XmlNode)nodeValue;
  60. if(cnode.Attributes.Count==0)
  61. {
  62. XmlNodeListchildren=cnode.ChildNodes;
  63. if(children.Count==0)
  64. nodeValue=null;
  65. elseif(children.Count==1&&(children[0]isXmlText))
  66. nodeValue=((XmlText)(children[0])).InnerText;
  67. }
  68. }
  69. //AddnodeValuetoArrayListassociatedwitheachnodeName
  70. //IfnodeNamedoesn'texistthenaddit
  71. objectoValuesAL=childNodeNames[nodeName];
  72. ArrayListValuesAL;
  73. if(oValuesAL==null)
  74. {
  75. ValuesAL=newArrayList();
  76. childNodeNames[nodeName]=ValuesAL;
  77. }
  78. else
  79. ValuesAL=(ArrayList)oValuesAL;
  80. ValuesAL.Add(nodeValue);
  81. }
  82. privatestaticvoidOutputNode(stringchildname,objectalChild,StringBuildersbJSON,boolshowNodeName)
  83. {
  84. if(alChild==null)
  85. {
  86. if(showNodeName)
  87. sbJSON.Append("http://""+SafeJSON(childname)+"http://":");
  88. sbJSON.Append("null");
  89. }
  90. elseif(alChildisstring)
  91. {
  92. if(showNodeName)
  93. sbJSON.Append("http://""+SafeJSON(childname)+"http://":");
  94. stringsChild=(string)alChild;
  95. sChild=sChild.Trim();
  96. sbJSON.Append("http://""+SafeJSON(sChild)+"http://"");
  97. }
  98. else
  99. XmlToJSONnode(sbJSON,(XmlElement)alChild,showNodeName);
  100. sbJSON.Append(",");
  101. }
  102. //MakeastringsafeforJSON
  103. privatestaticstringSafeJSON(stringsIn)
  104. {
  105. StringBuildersbOut=newStringBuilder(sIn.Length);
  106. foreach(charchinsIn)
  107. {
  108. if(Char.IsControl(ch)||ch=='//'')
  109. {
  110. intich=(int)ch;
  111. sbOut.Append(@"http://u"+ich.ToString("x4"));
  112. continue;
  113. }
  114. elseif(ch=='//"'||ch=='////'||ch=='/')
  115. {
  116. sbOut.Append('////');
  117. }
  118. sbOut.Append(ch);
  119. }
  120. returnsbOut.ToString();
  121. }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新干县| 临湘市| 壶关县| 将乐县| 分宜县| 囊谦县| 山丹县| 南澳县| 南宁市| 嘉鱼县| 灯塔市| 新乡县| 铜梁县| 镇坪县| 闽侯县| 那坡县| 涞水县| 霍林郭勒市| 平远县| 藁城市| 湄潭县| 邛崃市| 三江| 凤冈县| 海门市| 榆中县| 济阳县| 依安县| 禹城市| 乐亭县| 南安市| 宁国市| 武汉市| 波密县| 梓潼县| 云阳县| 交口县| 波密县| 乌拉特前旗| 江孜县| 洛扎县|