• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > 详解C#对XML、JSON等格式的解析

详解C#对XML、JSON等格式的解析

作者:极简 字体:[增加 减小] 来源:互联网 时间:2017-05-28

极简 通过本文主要向大家介绍了c语言32关键字详解,c语言链表详解,c语言指针详解,c语言题库及详解答案,c语言关键字详解等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

一、C#对XML格式数据的解析

1、用XMLDocument来解析

XmlDocument xmlDocument = new XmlDocument(); 
xmlDocumentLoad("testxml"); 
 
//创建新节点  
XmlElement nn = xmlDocumentCreateElement("image"); 
nnSetAttribute("imageUrl", "jpg"); 
 
XmlNode node = xmlDocumentSelectSingleNode("content/section/page/gall/folder");//定位到folder节点 
nodeAppendChild(nn);//附加新节点 
 
//保存 
xmlDocumentSave("testxml"); 
</div>

2、用Linq to XML来解析

可以通过遍历,来获得你想要的节点的内容或属性

XElement root = XElementLoad("testxml"); 
foreach (XAttribute att in rootAttributes()) 
{ 
  rootAdd(new XElement(attName, (string)att)); 
} 
ConsoleWriteLine(root); 
</div>

3、附一个详细点的例子

比如要解析如下的xml文件,将其转化为Ilist对象。

<?xml version="0" encoding="utf-8"?> 
<Car> 
 <carcost> 
  <ID>20130821133126</ID> 
  <uptime>60</uptime> 
  <downtime>30</downtime> 
  <price>4</price> 
 </carcost> 
 <carcost> 
  <ID>20130821014316</ID> 
  <uptime>120</uptime> 
  <downtime>60</downtime> 
  <price>3</price> 
 </carcost> 
 <carcost> 
  <ID>20130822043127</ID> 
  <uptime>30</uptime> 
  <downtime>0</downtime> 
  <price>5</price> 
 </carcost> 
 <carcost> 
  <ID>20130822043341</ID> 
  <uptime>120以上!</uptime> 
  <downtime>120</downtime> 
  <price>2</price> 
 </carcost> 
</Car> 
</div>

在控制台应用程序中输入如下代码即可。

class Program 
{ 
  static void Main(string[] args) 
  { 
    IList<CarCost> resultList = new List<CarCost>(); 
 
    XmlDocument xmlDocument = new XmlDocument(); 
    xmlDocumentLoad("testxml"); 
 
    XmlNodeList xmlNodeList = xmlDocumentSelectSingleNode("Car")ChildNodes; 
    foreach (XmlNode list in xmlNodeList) 
    { 
      CarCost carcost = new CarCost 
      ( 
        listSelectSingleNode("ID")InnerText, 
        listSelectSingleNode("uptime")InnerText, 
        listSelectSingleNode("downtime")InnerText, 
        floatParse(listSelectSingleNode("price")InnerText) 
      ); 
      resultListAdd(carcost); 
    } 
 
    IEnumerator enumerator = resultListGetEnumerator(); 
    while (enumeratorMoveNext()) 
    { 
      CarCost carCost = enumeratorCurrent as CarCost; 
      ConsoleWriteLine(carCostID + " " + carCostUpTime + " " + carCostDownTime + " " + carCostPrice); 
    } 
  } 
} 
 
public class CarCost 
{ 
  public CarCost(string id, string uptime, string downtime, float price) 
  { 
    thisID = id; 
    thisUpTime = uptime; 
    thisDownTime = downtime; 
    thisPrice = price; 
  } 
  public string ID { get; set; } 
  public string UpTime { get; set; } 
  public string DownTime { get; set; } 
  public float Price { get; set; } 
} 
</div>

二、C#对JSON格式数据的解析

引用NewtonsoftJsondll文件,来解析。

比如:有个要解析的JSON字符串

[{"TaskRoleSpaces":"","TaskRoles":"","ProxyUserID":"5d9ad5dc1c5e494db1d1b4d8d79b60a7","UserID":"5d9ad5dc1c5e494db1d1b4d8d79b60a7","UserName":"姓名","UserSystemName":"2234","OperationName":"送合同负责人","OperationValue":"同意","OperationValueText":"","SignDate":"2013-06-19 10:31:26","Comment":"同意","FormDataHashCode":"","SignatureDivID":""},{"TaskRoleSpaces":"","TaskRoles":"","ProxyUserID":"2c96c3943826ea93013826eafe6d0089","UserID":"2c96c3943826ea93013826eafe6d0089","UserName":"姓名2","UserSystemName":"1234","OperationName":"送合同负责人","OperationValue":"同意","OperationValueText":"","SignDate":"2013-06-20 09:37:11","Comment":"同意","FormDataHashCode":"","SignatureDivID":""}]
</div>

首先定义个实体类:

public class JobInfo 
{ 
  public string TaskRoleSpaces { get; set; } 
  public string TaskRoles { get; set; } 
  public string ProxyUserID { get; set; } 
  public string UserID { get; set; } 
  public string UserName { get; set; } 
  public string UserSystemName { get; set; } 
  public string OperationName { get; set; } 
  public string OperationValue { get; set; } 
  public string OperationValueText { get; set; } 
  public DateTime SignDate { get; set; } 
  public string Comment { get; set; } 
  public string FormDataHashCode { get; set; } 
  public string SignatureDivID { get; set; } 
} 
</div>

然后在控制台Main函数内部输入如下代码:

string json = @"[{'TaskRoleSpaces':'','TaskRoles':'','ProxyUserID':'5d9ad5dc1c5e494db1d1b4d8d79b60a7','UserID':'5d9ad5dc1c5e494db1d1b4d8d79b60a7','UserName':'姓名','UserSystemName':'2234','OperationName':'送合同负责人','OperationValue':'同意','OperationValueText':'','SignDate':'2013-06-19 10:31:26','Comment':'同意','FormDataHashCode':'','SignatureDivID':''},{'TaskRoleSpaces':'','TaskRoles':'','ProxyUserID':'2c96c3943826ea93013826eafe6d0089','UserID':'2c96c3943826ea93013826eafe6d0089','UserName':'姓名2','UserSystemName':'1234','OperationName':'送合同负责人','OperationValue':'同意','OperationValueText':'','SignDate':'2013-06-20 09:37:11','Comment':'同意','FormDataHashCode':'','SignatureDivID':''}] 
"; 
  
      List<JobInfo> jobInfoList = JsonConvertDeserializeObject<List<JobInfo>>(json); 
  
      foreach (JobInfo jobInfo in jobInfoList) 
      { 
        ConsoleWriteLine("UserName:" + jobInfoUserName + "UserID:" + jobInfoUserID); 
      } 
</div>

这样就可以正常输出内容了。

我想肯定有人会问,如果有多层关系的json字符串该如何处理呢?没关系,一样的处理。

比如如何解析这个json字符串:[{'phantom':true,'id':'20130717001','data':{'MID':1019,'Name':'aaccccc','Des':'cc','Disable':'启用','Remark':'cccc'}}]  ?

首先还是定义实体类:

public class Info 
{ 
  public string phantom { get; set; } 
  public string id { get; set; } 
  public data data { get; set; } 
} 
 
public class data 
{ 
  public int MID { get; set; } 
  public string Name { get; set; } 
  public string Des { get; set; } 
  public string Disable { get; set; } 
  public string Remark { get; set; } 
} 
</div>

然后在main方法里面,键入:

string json = @"[{'phantom':true,'id':'20130717001','data':{'MID':1019,'Name':'aaccccc','Des':'cc','Disable':'启用','Remark':'cccc'}}]"; 
List<Info> infoList = JsonConvertDeserializeObject<List<Info>>(json); 
 
foreach (Info info in infoList) 
{ 
  ConsoleWriteLine("id:" + infodataMID); 
} 
</div>

按照我们的预期,应该能够得到1019的结果。

截图为证:

再附一个JSON解析的例子,来自于兔子家族—二哥在本篇博客下的回复。

JSON字符串1:{success:true,data:{id:100001,code:\"JTL-Z38005\",name:\"奥迪三轮毂\",location:\"A-202\",qty:100,bins:[{code:\"JTL-Z38001\",name:\"奥迪三轮毂\",location:\"A-001\",qty:100},{ code:\"JTL-Z38002\",name:\"奥迪三轮毂\",location:\"A-002\",qty:100}]}}

定义数据结构:

public class Data 
 { 
   public Boolean success { get; set; } 
   public Data1 data { ge



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 详解C#中三个关键字params,Ref,out
  • 详解三种C#实现数组反转方式
  • 详解C# 利用反射根据类名创建类的实例对象
  • 详解C#用new和override来实现抽象类的重写区别
  • 详解C#把DataTable中数据一次插入数据库的方法
  • 详解c# 类的构造方法
  • 详解C#多线程之线程同步
  • 详解C#中 Thread,Task,Async/Await,IAsyncResult的那些事儿
  • 详解C#中的委托
  • 详解C#中的out和ref

相关文章

  • 2017-05-28C# TextBox 扩展方法数据验证详细说明
  • 2017-05-28C#编程实现连接SQL SERVER数据库实例详解
  • 2017-05-28基于C# winform实现图片上传功能的方法
  • 2017-05-28C#修改及重置电脑密码DirectoryEntry实现方法
  • 2017-05-28C#使用虚拟方法实现多态
  • 2017-05-28详解C# TimeSpan 计算时间差(时间间隔)
  • 2017-05-28C#实现xml文件的读取与写入简单实例
  • 2017-05-28C#实现任务栏通知窗口
  • 2017-05-28WinForm实现基于BindingSource的方法扩展
  • 2017-05-28C# IEnumerable和IEnumerator接口浅析

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#基础之匿名方法实例教程
    • C#实现实体类与字符串互相转换的方法
    • C#实现在控制台输入密码显示星号的方法
    • c#读取文件详谈
    • c#深拷贝文件夹示例
    • C#中的多态深入理解
    • C#检测DataSet是否为空的方法
    • C#之Expression表达式树实例
    • .net 一些无法catch的异常
    • 浅谈static a[n*m]={0};中static的作用

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有