`
zxlyecf2
  • 浏览: 133172 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Linq to xml

阅读更多

使用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();
        }

 

0
0
分享到:
评论

相关推荐

    使用Linq To XML操作XML.pdf

    标题:"使用Linq To XML操作XML" 描述:"使用Linq To XML操作XML"是一篇详细介绍如何运用Linq To XML技术来高效操作XML文件的文章。Linq To XML是一种强大的API,它简化了创建、浏览和访问XML数据的过程。通过本文...

    Linq to xml,读取XMl节点值

    其中,LINQ to XML 是 LINQ 的一个子集,专门用于处理 XML 文档。它提供了一种高效、简洁且类型安全的方式来创建、操作和查询 XML 数据。在本篇文章中,我们将深入探讨如何使用 LINQ to XML 来读取 XML 节点值,并将...

    精通LINQ LINQ to XML

    《精通LINQ LINQ to XML》是一本专为开发者深入理解和掌握LINQ(Language Integrated Query,语言集成查询)技术,特别是LINQ to XML部分而编写的权威指南。这本书结合了LINQ的基础、进阶和实战应用,是学习LINQ的...

    LINQ教程中文版(LINQ TO SQL ,LINQ TO XML)

    本教程主要涵盖了两个核心部分:LINQ to SQL 和 LINQ to XML,都是针对不同类型数据源进行查询的工具。 ### LINQ to SQL LINQ to SQL 是一种对象关系映射(ORM)框架,允许开发者使用C#或VB.NET语言直接对SQL...

    LINQ To Xml示例程序

    **LINQ to XML 示例程序详解** LINQ (Language Integrated Query) 是 .NET Framework 中的一项重要技术,它将查询语句直接集成到C# 和 Visual Basic 语言中,提供了更直观和强大的数据查询方式。其中,LINQ to XML ...

    LINQ TO XML操作示例 初学者必看

    LINQ TO XML操作示例 轻轻松松 学会简单操作 本例子包含了通过LINQ创建XML、加载XML、读取XML、修改XML元素、属性、删除XML元素节点、属性,XML排序,保存XML等 基本上XML的操作都包含在这里面了。 适合学习LINQ...

    LINQ to XML操作XML的代码,通过它很快掌握用内存在对象方式操作XML数据

    LINQ to XML是LINQ的一个子集,专门用于处理XML文档。它提供了一种更加简洁、面向对象的方式来创建、操作和查询XML文档,使得在内存中处理XML数据变得更加高效和直观。 首先,让我们理解一下LINQ to XML的基本概念...

    linq to xml入门的例子

    **LINQ to XML 入门教程** LINQ (Language Integrated Query) 是.NET Framework中的一个强大特性,它将查询表达式直接集成到C#和Visual Basic等编程语言中,简化了数据查询的过程。其中,LINQ to XML是针对XML文档...

    linq to xml 增,删,改,查

    "LINQ to XML"是LINQ的一个子集,专门用于处理XML文档。它提供了更简洁、类型安全且高效的XML编程模型,使得在.NET环境中操作XML变得更加简单。 在"LINQ to XML"中,我们主要会接触到以下几个核心概念: 1. **...

    LINQ TO XML

    **LINQ to XML** 是 .NET Framework 中的一个重要特性,全称为 Language Integrated Query for XML,它将查询语言集成到了C#和Visual Basic等编程语言中,使得处理XML文档变得更加简洁和高效。LINQ to XML 提供了...

    示例描述:本章介绍LINQ to XML相关技术和使用

    示例描述:本章介绍LINQ to XML相关技术和使用。 CreateSimpleXMLTree 演示通过XElement创建简单的XML树。 CreateAttributeElement 演示通过XElement创建具有属性的XML元素。 CreateSubElement 演示通过...

    linq to sql 、linq to xml 、linq to object

    在.NET环境中,LINQ主要分为三个主要部分:LINQ to SQL、LINQ to XML和LINQ to Objects。 1. **LINQ to SQL**: LINQ to SQL 是一种数据访问技术,它允许开发者使用C#或VB.NET的查询语法直接对SQL Server数据库...

    Linq 大全 Linq To Sql Linq To DataSet Linq To Object Linq to Xml

    在标题和描述中提到的"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入门宝典:LInq To Xml与Linq To Sql详解** LInq(Language Integrated Query,语言集成查询)是.NET框架中的一个重要特性,它为C#和VB.NET提供了内建的查询能力,使得数据查询变得更加简洁、直观。LInq包括...

    Linq to Xml practise

    其中,LINQ to XML是针对XML文档处理的一套API,它简化了XML的读取、创建和修改过程。本实践例程将带你深入理解和运用LINQ to XML,以高效地操作XML数据。 首先,理解LINQ to XML的基础概念至关重要。它将XML文档视...

    Linq to xml 案例

    Linq(Language Integrated Query,语言集成查询)是一种在C#和VB.NET中对数据进行查询的新方式,而Linq to XML则是Linq家族的一员,专门针对XML数据提供了一种简洁、高效的编程接口。本案例将深入探讨Linq to XML的...

    linq to xml

    【LINQ to XML】是一种在.NET Framework中处理XML文档的强大工具,它引入于.NET Framework 3.5版本,是Language Integrated Query(LINQ)的一部分。LINQ to XML提供了高效的、面向对象的方式来创建、查询和修改XML...

    LINQ实战 linq to sql linq to xml 人民邮电出版社

    本书部分介绍了LINQ技术及C#和VB为此提供的新语言特性,第二、三、四部分详细介绍了LINQ的主要功能LINQ to Objects、LINQ to SQL、LINQ to XML,第五部分研究了LINQ的可扩展性、在应用程序中使用各种LINQ功能的方法...

    LINQ to XML 编程基础

    **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#入门经典(第四版)》的第29章中,作者深入探讨了LINQ to XML这一强大且灵活的编程技术。本章节旨在帮助读者掌握如何利用C#中的LINQ to XML来处理XML数据,使数据操作更加简便、高效。 ### 一、LINQ to XML...

Global site tag (gtag.js) - Google Analytics