C#解析XML与JSON实战指南

3 下载量 23 浏览量 更新于2024-09-03 收藏 117KB PDF 举报
"这篇文档详细介绍了C#编程语言如何解析XML和JSON这两种常见的数据格式,提供了具体的代码示例,适合对C#编程感兴趣的开发者参考学习。" 在C#中,处理XML数据是常见的任务,XML作为一种结构化数据,广泛用于存储和传输信息。本文将介绍两种解析XML的主要方法:使用`XmlDocument`类和使用LINQ to XML(Language Integrated Query for XML)。 1. 使用`XmlDocument`解析XML `XmlDocument`是.NET框架中的一个类,它提供了一整套API用于读取、修改和保存XML文档。以下是一个简单的示例,展示如何使用`XmlDocument`创建、修改和保存XML文档: ```csharp XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load("testxml"); // 加载XML文件 // 创建新节点 XmlElement newNode = xmlDocument.CreateElement("image"); newNode.SetAttribute("imageUrl", "jpg"); // 定位到folder节点并附加新节点 XmlNode node = xmlDocument.SelectSingleNode("content/section/page/gall/folder"); node.AppendChild(newNode); // 保存修改后的XML文件 xmlDocument.Save("testxml"); ``` 2. 使用LINQ to XML解析XML LINQ to XML是.NET Framework 3.5引入的一种更现代、更简洁的处理XML的方式。它可以结合C#的查询表达式,使得操作XML更加直观。下面的例子展示了如何使用LINQ to XML加载XML文件并遍历其属性: ```csharp XElement root = XElement.Load("testxml"); foreach (XAttribute att in root.Attributes()) { root.Add(new XElement(att.Name, (string)att)); } Console.WriteLine(root); ``` 3. 详细例子:将XML转换为IList对象 为了更深入理解,我们来看一个具体的例子,假设有一个包含多个`carcost`元素的XML文件,每个元素包含`ID`、`uptime`、`downtime`和`price`属性。我们可以使用LINQ to XML将其转换为`IList<CarCost>`对象: ```csharp XDocument doc = XDocument.Load("cars.xml"); var carCosts = doc.Descendants("carcost") .Select(cc => new CarCost { ID = (string)cc.Element("ID"), Uptime = (int)cc.Element("uptime"), Downtime = (int)cc.Element("downtime"), Price = (int)cc.Element("price") }).ToList(); // CarCost 类定义 public class CarCost { public string ID { get; set; } public int Uptime { get; set; } public int Downtime { get; set; } public int Price { get; set; } } ``` 至于JSON解析,C#中常用的是`Newtonsoft.Json`库(又称Json.NET),这是一个功能强大的库,支持序列化和反序列化JSON。例如,要反序列化JSON字符串到一个对象,可以这样做: ```csharp using Newtonsoft.Json; string jsonString = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}"; dynamic jsonObject = JsonConvert.DeserializeObject(jsonString); Console.WriteLine(jsonObject.name); // 输出 "John" ``` C#提供了多种方式处理XML和JSON数据,可以根据项目需求和个人喜好选择适合的方法。对于XML,`XmlDocument`提供了全面的控制,而LINQ to XML则提供了更简洁的语法。对于JSON,Json.NET是广泛使用的首选库。