使用linq来操作xml对象,这里简单的举了一些例子
/// <summary> ///1、新建 XML文件 /// </summary> /// <param name="xmlpath"> XML文件的路径</param> private static void CreateXmlFile(string xmlpath) { XDocument doc = new XDocument( ///创建XDocument类的实例 new XDeclaration("1.0", "utf-8", "yes"),///XML的声明,包括版本,编码,xml文件是否独立 new XElement("Books", ///添加根节点 new XElement("Book", ///添加一个节点 new XAttribute("BookID", "001"),///添加属性BookID new XElement("BookNo", "0001"), ///添加元素BookNo new XElement("BookName", "Book 0001"),///添加元素BookName new XElement("BookPrice", "40"),///添加元素BookPrice new XElement("BookRemark", "This is a book 0001")///添加元素BookRemark ) ) ); ///保存XML文件到指定地址 doc.Save(xmlpath); Console.WriteLine(doc); }
/// <summary> /// 2、添加元素 /// </summary> /// <param name="xmlpath">XML文件的路径</param> private static void AddXmlElement(string xmlpath) { ///导入XML文件 XElement xe = XElement.Load(xmlpath); ///创建一个新节点 XElement book1 = new XElement("Book", new XAttribute("BookID", "002"), new XElement("BookNo", "0002"), new XElement("BookName", "Book 0002"), new XElement("BookPrice", "50"), new XElement("BookRemark", "This is a book 0002") ); ///添加节点到XML文件中,并保存 xe.Add(book1); ///创建一个新节点 XElement book2 = new XElement("Book", new XAttribute("BookID", "003"), new XElement("BookNo", "0003"), new XElement("BookName", "Book 0003"), new XElement("BookPrice", "30"), new XElement("BookRemark", "This is a book 0003") ); ///添加节点到XML文件中,并保存 xe.Add(book2); ///创建一个新节点 XElement book3 = new XElement("Book", new XAttribute("BookID", "004"), new XElement("BookNo", "0004"), new XElement("BookName", "Book 0004"), new XElement("BookPrice", "60"), new XElement("BookRemark", "This is a book 0004") ); ///添加节点到XML文件中 xe.Add(book3); ///保存到XML文件中 xe.Save(xmlpath); Console.WriteLine(xe); }
/// <summary> /// 3、修改XML文件的元素 /// </summary> /// <param name="xmlpath">XML文件的路径</param> /// <param name="strElement">指定的修改元素</param> private static void ModifyXmlElement(string xmlpath, string strElement) { XElement xe = XElement.Load(xmlpath); ///查询修改的元素 IEnumerable<XElement> element = from e in xe.Elements("Book") where e.Attribute("BookID").Value == strElement select e; ///修改元素 if (element.Count() > 0) { XElement firstelement = element.First(); ///设置新的属性 firstelement.SetAttributeValue("BookID", "new004"); ///替换成新的节点 firstelement.ReplaceNodes( new XElement("BookNo", "new0004"), new XElement("BookName", "Book new0004"), new XElement("BookPrice", "45"), new XElement("BookRemark", "This is a book new0004") ); } xe.Save(xmlpath); Console.WriteLine(xe); }
/// <summary> /// 4、删除XML文件的元素 /// </summary> /// <param name="xmlpath">XML文件的路径</param> /// <param name="strElement">指定删除元素</param> private static void DeleteXmlElement(string xmlpath, string strElement) { XElement xe = XElement.Load(xmlpath); ///查询修改的元素 IEnumerable<XElement> element = from e in xe.Elements("Book") where e.Attribute("BookID").Value == strElement select e; ///修改元素 if (element.Count() > 0) { XElement firstelement = element.First(); //删除该节点 firstelement.Remove(); ///删除此元素的所有节点和属性 ///firstelement.RemoveAll(); ///删除此元素的属性 //firstelement.RemoveAttributes(); ///删除此元素的子节点 //firstelement.RemoveNodes(); } xe.Save(xmlpath); Console.WriteLine(xe); }
/// <summary> /// 5、将XML文件中的属性更换成元素 /// </summary> /// <param name="xmlpath">XML文件的路径</param> /// <param name="strAttribute">指定要更换的属性</param> private static void ConvertAttributeToElement(string xmlpath, string strAttribute) { XElement xe = XElement.Load(xmlpath); ///查询更换的元素 IEnumerable<XElement> element = from e in xe.Elements("Book") where e.Attribute("BookID").Value == strAttribute select e; ///更换为元素 if (element.Count() > 0) { XElement firstelement = element.First(); //获取第一个属性 XAttribute attr = firstelement.FirstAttribute; ///将属性转换成元素 firstelement.AddFirst( new XElement(attr.Name, attr.Value)//添加BookID元素 ); ///删除属性 firstelement.RemoveAttributes(); } xe.Save(xmlpath); Console.WriteLine(xe); }
/// <summary> /// 6、查询根元素 /// </summary> /// <param name="xmlpath">XML文件的路径</param> private static void QueryRootElement(string xmlpath) { XDocument doc = XDocument.Load(xmlpath); Console.WriteLine(doc.Root.Name); }
/// <summary> /// 7、查询指定名称的元素 /// </summary> /// <param name="xmlpath">XML文件的路径</param> /// <param name="strName">查询元素名称</param> private static void QueryElementByName(string xmlpath, string strName) { XElement xe = XElement.Load(xmlpath); ///查询元素 var elements = xe.Elements("Book") .Where(e => (string)e.Element("BookName") == strName) .OrderBy(e => e.Element("BookName")) .ToList(); elements.ForEach(e => Console.WriteLine(e)); }
/// <summary> /// 8、查询指定属性的元素 /// </summary> /// <param name="xmlpath">XML文件的路径</param> /// <param name="strName">指定的属性</param> private static void QueryElementByAttribute(string xmlpath, string strAttribute) { XElement xe = XElement.Load(xmlpath); ///查询元素 var eAttribute = xe.Elements("Book") .Where(e => (string)e.Attribute("BookID") == strAttribute) .OrderBy(e => e.Element("BookID")) .ToList(); eAttribute.ForEach(e => Console.WriteLine(e)); }
/// <summary> /// 9、查询元素并按指定的子元素排序 /// </summary> /// <param name="xmlpath">XML文件的路径</param> /// <param name="strSubElement">指定元素</param> private static void QuerySubElement(string xmlpath) { XElement xe = XElement.Load(xmlpath); var elements = xe.Elements("Book") .Descendants("BookRemark") .ToList(); foreach (var e in elements) { Console.WriteLine(e.Name.LocalName + "\t" + e.Value); } }
/// <summary> /// 10、查询元素并排序 /// </summary> /// <param name="xmlpath">XML文件的路径</param> private static void QueryElementByOrder(string xmlpath) { XElement xe = XElement.Load(xmlpath); var elements = xe.Elements("Book") .Where(e => Convert.ToInt32(e.Attribute("BookID").Value.Substring(e.Attribute("BookID").Value.Length - 1, 1)) > 1) .OrderByDescending(e => (string)e.Element("BookName")) .ToList(); elements.ForEach(e => Console.WriteLine(e.Element("BookName").Value)); }
/// <summary> /// 11、查询元素并计算Price平均值 /// </summary> /// <param name="xmlpath">XML文件的路径</param> private static void QueryElementByCoeompute(string xmlpath) { XElement xe = XElement.Load(xmlpath); var elements = xe.Elements("Book") .Where(e => Convert.ToInt32(e.Attribute("BookID").Value.Substring(e.Attribute("BookID").Value.Length - 1, 1)) > 1) .OrderByDescending(e => (string)e.Element("BookName")) .ToList(); Console.WriteLine("Average:" + elements.Average(e => Convert.ToInt32(e.Element("BookPrice").Value))); }
static void Main(string[] args) { string xmlpath = @"F:\程序案例\LinqToXmlTest\LinqToXmlTest\BookStore.xml"; ///1、创建一个名为BookStore.xml的xml文件 //CreateXmlFile(xmlpath); ///2、添加XML元素 //AddXmlElement(xmlpath); ///3、修改XML文件的元素 //ModifyXmlElement(xmlpath, "004"); ///4、删除XML元素 //DeleteXmlElement(xmlpath, "new004"); ///5、将文件中的属性更换成元素 //ConvertAttributeToElement(xmlpath, "new004"); ///6、查询根元素 //QueryRootElement(path); /// 7、查询指定名称的元素 // QueryElementByName(xmlpath, "Book 0002"); /// 9、查询元素并按指定的子元素排序 //QuerySubElement(xmlpath); /// 10、查询元素并排序 //QueryElementByOrder(xmlpath); /// 11、查询元素并计算Price平均值 QueryElementByCoeompute(xmlpath); Console.ReadKey(); }
相关推荐
其中,LINQ to XML 是 LINQ 的一个子集,专门用于处理 XML 文档。它提供了一种高效、简洁且类型安全的方式来创建、操作和查询 XML 数据。在本篇文章中,我们将深入探讨如何使用 LINQ to XML 来读取 XML 节点值,并将...
《精通LINQ LINQ to XML》是一本专为开发者深入理解和掌握LINQ(Language Integrated Query,语言集成查询)技术,特别是LINQ to XML部分而编写的权威指南。这本书结合了LINQ的基础、进阶和实战应用,是学习LINQ的...
本教程主要涵盖了两个核心部分:LINQ to SQL 和 LINQ to XML,都是针对不同类型数据源进行查询的工具。 ### LINQ to SQL LINQ to SQL 是一种对象关系映射(ORM)框架,允许开发者使用C#或VB.NET语言直接对SQL...
**LINQ to XML 示例程序详解** LINQ (Language Integrated Query) 是 .NET Framework 中的一项重要技术,它将查询语句直接集成到C# 和 Visual Basic 语言中,提供了更直观和强大的数据查询方式。其中,LINQ to XML ...
LINQ TO XML操作示例 轻轻松松 学会简单操作 本例子包含了通过LINQ创建XML、加载XML、读取XML、修改XML元素、属性、删除XML元素节点、属性,XML排序,保存XML等 基本上XML的操作都包含在这里面了。 适合学习LINQ...
LINQ to XML是LINQ的一个子集,专门用于处理XML文档。它提供了一种更加简洁、面向对象的方式来创建、操作和查询XML文档,使得在内存中处理XML数据变得更加高效和直观。 首先,让我们理解一下LINQ to XML的基本概念...
**LINQ to XML 入门教程** LINQ (Language Integrated Query) 是.NET Framework中的一个强大特性,它将查询表达式直接集成到C#和Visual Basic等编程语言中,简化了数据查询的过程。其中,LINQ to XML是针对XML文档...
"LINQ to XML"是LINQ的一个子集,专门用于处理XML文档。它提供了更简洁、类型安全且高效的XML编程模型,使得在.NET环境中操作XML变得更加简单。 在"LINQ to XML"中,我们主要会接触到以下几个核心概念: 1. **...
**LINQ to XML** 是 .NET Framework 中的一个重要特性,全称为 Language Integrated Query for XML,它将查询语言集成到了C#和Visual Basic等编程语言中,使得处理XML文档变得更加简洁和高效。LINQ to XML 提供了...
示例描述:本章介绍LINQ to XML相关技术和使用。 CreateSimpleXMLTree 演示通过XElement创建简单的XML树。 CreateAttributeElement 演示通过XElement创建具有属性的XML元素。 CreateSubElement 演示通过...
在.NET环境中,LINQ主要分为三个主要部分:LINQ to SQL、LINQ to XML和LINQ to Objects。 1. **LINQ to SQL**: LINQ to SQL 是一种数据访问技术,它允许开发者使用C#或VB.NET的查询语法直接对SQL Server数据库...
在标题和描述中提到的"Linq To Sql"、"Linq To DataSet"、"Linq To Object"和"Linq To Xml"是LINQ的四种主要应用方式,分别用于SQL数据库、DataSet、内存中的对象以及XML数据的查询。 1. **LINQ to SQL**: LINQ ...
**LInq入门宝典:LInq To Xml与Linq To Sql详解** LInq(Language Integrated Query,语言集成查询)是.NET框架中的一个重要特性,它为C#和VB.NET提供了内建的查询能力,使得数据查询变得更加简洁、直观。LInq包括...
其中,LINQ to XML是针对XML文档处理的一套API,它简化了XML的读取、创建和修改过程。本实践例程将带你深入理解和运用LINQ to XML,以高效地操作XML数据。 首先,理解LINQ to XML的基础概念至关重要。它将XML文档视...
Linq(Language Integrated Query,语言集成查询)是一种在C#和VB.NET中对数据进行查询的新方式,而Linq to XML则是Linq家族的一员,专门针对XML数据提供了一种简洁、高效的编程接口。本案例将深入探讨Linq to XML的...
【LINQ to XML】是一种在.NET Framework中处理XML文档的强大工具,它引入于.NET Framework 3.5版本,是Language Integrated Query(LINQ)的一部分。LINQ to XML提供了高效的、面向对象的方式来创建、查询和修改XML...
本书部分介绍了LINQ技术及C#和VB为此提供的新语言特性,第二、三、四部分详细介绍了LINQ的主要功能LINQ to Objects、LINQ to SQL、LINQ to XML,第五部分研究了LINQ的可扩展性、在应用程序中使用各种LINQ功能的方法...
**LINQ to XML 编程基础** LINQ (Language Integrated Query) to XML 是 .NET Framework 中的一个重要组件,它提供了一种简洁、高效的方式来处理XML文档。LINQ to XML 结合了C# 和 VB.NET 语言特性,使得XML操作...
在《C#入门经典(第四版)》的第29章中,作者深入探讨了LINQ to XML这一强大且灵活的编程技术。本章节旨在帮助读者掌握如何利用C#中的LINQ to XML来处理XML数据,使数据操作更加简便、高效。 ### 一、LINQ to XML...