C#解析XML与JSON数据详解

7 下载量 148 浏览量 更新于2024-08-28 收藏 121KB PDF 举报
“本文详细介绍了C#语言如何解析XML和JSON格式的数据,包括使用XMLDocument、Linq to XML等方法,并提供了一个将XML文件转换为IList对象的示例。” 在C#编程中,处理XML数据是非常常见的任务。XML(可扩展标记语言)是一种用于存储和传输结构化数据的标准格式。C#提供了多种方式来解析和操作XML文档,下面将重点介绍两种常用的方法:XMLDocument和Linq to XML。 1. XMLDocument解析: XMLDocument是.NET Framework中的一个类,它允许开发者加载、修改和保存XML文档。以下是一个基本的使用示例: ```csharp XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load("testxml"); // 加载XML文件 XmlElement nn = xmlDocument.CreateElement("image"); // 创建新节点 nn.SetAttribute("imageUrl", "jpg"); // 设置属性 XmlNode node = xmlDocument.SelectSingleNode("content/section/page/gall/folder"); // 定位到folder节点 node.AppendChild(nn); // 将新节点添加到folder节点下 xmlDocument.Save("testxml"); // 保存修改 ``` 在这个例子中,我们首先创建了一个XMLDocument实例,然后加载了名为"testxml"的XML文件。接着创建了一个新的XML元素并设置其属性,通过XPath选择语句找到特定的节点,并将新创建的元素添加到该节点下,最后保存所有修改。 2. Linq to XML解析: Linq to XML是C#的一个强大特性,它使用LINQ(Language Integrated Query)语法来查询和操作XML数据。下面是一个使用Linq to XML的例子: ```csharp XElement root = XElement.Load("testxml"); // 加载XML文件 foreach (XAttribute att in root.Attributes()) { root.Add(new XElement(att.Name, (string)att)); // 将属性转换为元素 } Console.WriteLine(root); ``` 在此例中,我们通过Linq to XML加载XML文件,然后遍历根节点的所有属性,将它们转换为子元素并添加回根节点。 3. XML到IList对象的转换: 假设我们有一个包含多个`<carcost>`元素的XML文件,每个元素表示车辆的成本信息。我们可以使用Linq to XML将其转换为IList对象: ```csharp var carCosts = from cost in XElement.Load("car_costs.xml").Descendants("carcost") select new CarCost { ID = (int)cost.Element("ID"), Uptime = (int)cost.Element("uptime"), Downtime = (int)cost.Element("downtime"), Price = (int)cost.Element("price") }; List<CarCost> carCostList = carCosts.ToList(); ``` 这里定义了一个匿名类型`CarCost`,然后使用LINQ查询从XML文件中提取每个`carcost`元素的子元素值,并将其转换为`CarCost`对象。最后,结果被转换为一个`List<CarCost>`列表。 JSON(JavaScript Object Notation)是另一种广泛使用的轻量级数据交换格式,C#同样提供了处理JSON的强大工具,例如Newtonsoft.Json库(Json.NET)。在处理JSON时,可以使用Json.NET的`JObject`、`JArray`、`JsonSerializer`等类来序列化和反序列化JSON数据,但这里不再详述,因为标题和描述主要关注XML解析。