ASP.NET中XML转JSON的方法

  许多应用程序都将数据存储为XML的格式,而且会将数据以JSON的格式发送到客户端以做进一步处理。要实现这一点,它们必须将XML格式转换为JSON格式。

  XML转JSON代码

  [csharp] view plaincopy

  

在CODE上查看代码片

  

派生到我的代码片

  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(" ], ");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值