Linq实现对XML的简单增删查改

一、传统DOM创建XML方法

 private static void CreateXmlDocWithDom()
        {
            XmlDocument doc =new XmlDocument();
            XmlElement inventory = doc.CreateElement("Inventory");
            XmlElement car = doc.CreateElement("Car");
            car.SetAttribute("ID", "1000");
            XmlElement name = doc.CreateElement("PetName");
            name.InnerText = "Jimbo";
            XmlElement color = doc.CreateElement("Color");
            color.InnerText = "Red";
            XmlElement make = doc.CreateElement("Make");
            make.InnerText = "Xuhang";
            car.AppendChild(name);
            car.AppendChild(color);
            car.AppendChild(make);
            inventory.AppendChild(car);
            doc.AppendChild(inventory);
            string savePath = @"E:\LinqToXML\Sample\InventoryWithDom.xml";
            doc.Save(savePath);
        }

二、用LinqToXML创建

精简模式:

  public static void CreateXmlDocWithLinqToXml()
        {
            XElement doc = new XElement("Inventory",
                new XElement("Car", new XAttribute("ID", "1000"),
                    new XElement("PetName", "Jimbo"),
                    new XElement("Color", "green"),
                    new XElement("Make", "Xuhang")));
            string savePath = @"E:\LinqToXML\Sample\InventoryWithLinq.xml";
            doc.Save(savePath);
        }

完整模式(包含版本号,字符集以及样式表):

  public static void CreateFullXDocument()
        {
            XDocument doc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"),
                new XComment("Current Inventory of Cars"),
                new XProcessingInstruction("xml-stylesheet", "href=‘MyStyles.css‘ title=‘Compact‘ type=‘text/css‘"),
                new XElement("Inventory",
                    new XElement("Car", new XAttribute("ID", "1"),
                        new XElement("PetName", "Jimbo"),
                        new XElement("Color", "Green"),
                        new XElement("Make", "Xuhang")),
                    new XElement("Car", new XAttribute("ID", "2"),
                        new XElement("PetName", "MeLvin"),
                        new XElement("Color", "Red"),
                        new XElement("Make", "Guizhu"))));
            string savePath = @"E:\LinqToXML\Sample\FullInventory.xml";
            doc.Save(savePath);
        }

三、将数组或其它存储集合里的数据导入XML

 public static void MakeXElementFromArray()
        {
            var people = new[]
            {
                new {FristName="Mandy",age=32},
                new {FristName="Andrew",age=40},
                new {FristName="Dave",age=41},
                new {FristName="Sara",age=31},
            };
            //XElement peopleDoc=new XElement("People",from c in people select new XElement("Person",new XAttribute("Age",c.age),
            //    new XElement("FirstName",c.FristName)));

            var m =people.Select(p => new XElement("Person", new XAttribute("Age", p.age), new XElement("FirstName", p.FristName)));  
            XElement peopleDoc = new XElement("People", m);
            Console.WriteLine(peopleDoc);
        }

四、读取XML文件

  public static void ParseAndLoadExistingXml()
        {
            string myElement = @"<Car ID=‘2‘>
                                    <PetName>MeLvin</PetName>
                                    <Color>Red</Color>
                                    <Make>Guizhu</Make>
                                  </Car>";
            XElement newElement = XElement.Parse(myElement);
            Console.WriteLine(newElement);
            Console.WriteLine();

            XDocument myDocument = XDocument.Load(@"E:\LinqToXML\Sample\InsertInventory.xml");
            Console.WriteLine(myDocument);
        }

五、插入新的节点

 public static void InsertNewElement()
        {
            XDocument myDocument = XDocument.Load(@"E:\LinqToXML\Sample\InsertInventory.xml");
            Random r=new Random();
            XElement newElement = new XElement("Car", new XAttribute("ID",r.Next(100)),
                                        new XElement("PetName", "Baoma"),
                                        new XElement("Color", "yellow"),
                                        new XElement("Make", "Mrxu"));
            myDocument.Descendants("Inventory").First().Add(newElement);
            string savePath = @"E:\LinqToXML\Sample\InsertInventory.xml";
            myDocument.Save(savePath);
        }

六、删除某组节点

 public static void DeleteNodeFromDoc()
        {
            XElement doc = new XElement("Inventory",
                new XElement("Car", new XAttribute("ID", "1000"),
                    new XElement("PetName", "Jimbo"),
                    new XElement("Color", "green"),
                    new XElement("Make", "Xuhang")));
            doc.Descendants("PetName").Remove();
            Console.WriteLine(doc);
        }

七、查询某条记录

   public static void LookUpColorFromMake(string make)
        {
            XDocument myDocument = XDocument.Load(@"E:\LinqToXML\Sample\InsertInventory.xml");
            var makefor = from car in myDocument.Descendants("Car")
                          where (string)car.Element("Make") == make
                          select car.Attribute("ID").Value;
                         //select car.Element("Color").Value;

            //var makefor = myDocument.Descendants("Car").Where(p => ((string)p.Element("Make")).Equals("Mrxu")).Select(p => p.Attribute("ID").Value);
            string data = String.Empty;
            foreach (var item in makefor)
            {
                data += String.Format("-{0}",item);
            }
            Console.WriteLine(data);
        }

八、更新数据信息

public static void UpdateXmlDate()
        {
            XDocument myDocument = XDocument.Load(@"E:\LinqToXML\Sample\InsertInventory.xml");
            var makefor = myDocument.Descendants("Car").Where(p => ((string) p.Element("Make")).Equals("Mrxu"));
            foreach (var xElement in makefor)
            {
                xElement.Element("Make").Value = "Xuhang";
            }
            Console.WriteLine(myDocument);
        }

九、示例

  static void Main(string[] args)
        {
            //CreateXmlDocWithDom();
            //CreateXmlDocWithLinqToXml();
            //CreateFullXDocument();
            //DeleteNodeFromDoc();
            //InsertNewElement();
            //ParseAndLoadExistingXml();
            //MakeXElementFromArray();
            //LookUpColorFromMake("Mrxu");
            //UpdateXmlDate();
            MakeXElementFromArray();
            Console.ReadKey();
        }

源码下载地址:链接:http://pan.baidu.com/s/1mg5MRJa 密码:lyn5

时间: 2024-10-06 22:57:29

Linq实现对XML的简单增删查改的相关文章

C#实现对mongoDB的简单增删查改

首先添加所需要驱动包(可通过nuget获得) using MongoDB.Bson;using MongoDB.Driver;using MongoDB.Driver.Builders; 一.设置配置信息 //连接信息 static string conn = "mongodb://localhost"; static string database = "test"; static string collection = "person"; s

Asp.Net+Oracle+EasyUI简单增删查改

Asp.Net+Oracle+EasyUI简单增删查改 概要:网上有很多关于EasyUI前端框架的资料,本人在学习的基础上,基于自己之前搭建的框架(Oracle+Ado.Net),配合EasyUI实现一套简单的增删查改. 正文: 在实体层新建一个EMP.cs,继承至BaseModel 1 namespace myOracle.Model 2 { 3 public class Emp:BaseModel 4 { 5 public Emp() 6 { 7 base.PrimaryKey = "emp

Asp.Net Mvc+MongoDB简单增删查改

                                   Asp.Net Mvc+MongoDB简单增删查改 概要:现在很多企业都在使用非关系型的NoSql数据库,其中MongoDB是相当热门的,最近有空就研究了一下,本文写了一套基于Asp.Net Mvc和MongoDB的简单增删查改,本文部分内容是借用其他博文,最后我会贴出出处. 正文: 在控制器的Models中新建一个UserModel模型(其中相当于另开一个类库,类似Dal层) using System; using Syst

linq to xml 增删查改

一.XML基本概述 XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web.config文件,还有许多重要的场所都有它的身影.Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具.XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用.微软也提供了一系列类库来倒帮助我们在应用程序中存储XML文

asp.net MVC最简单的增删查改!(详)

折腾了两天搞出来,但原理性的东西还不是很懂,废话不多说上图上代码 然后右键models,新建一个数据模型 注意我添加命名为lianxi 添加后如上 接下来在controllers添加控制器还有在Views中添加视图 注意控制器lianxi和视图的名字要一致,然后视图我是添加了3个分别是Index,insert,Modify,在控制器里分别有三个对应的函数 每当用URL访问视图时,他就调用了controllers对应的方法,例如 jiaEntities 就是建立模式时那个数据链接的名字      

Spring-Ldap连接Ldap及简单的增删查改

了解了Ldap的基本概念之后就是Ldap的使用问题了,就像连接MySQL数据库,操作MySQL数据库中数据一样,我们怎么连接到Ldap呢?又是怎么操纵ldap中的数据呢? 我也是不断的在网上查找资料,最终选择使用Spring-ldap进行数据库的连接,因为我的项目使用SpringMVC+Spring开发,直接就利用Spring-ldap了,挺简单的. 步骤一:依赖(maven工程) <!-- 添加Spring 对LDAP的支持 --> <dependency> <groupI

nodejs连接mysql并进行简单的增删查改

最近在入门nodejs,正好学习到了如何使用nodejs进行数据库的连接,觉得比较重要,便写一下随笔,简单地记录一下 使用在安装好node之后,我们可以使用npm命令,在项目的根目录,安装nodejs中的mysql模块 npm install mysql 在连接数据库之前,要先引入nodejs连接处理mysql的模块 var mysql = require('mysql'); 类似php连接mysql的方式,编写连接代码 //使用nodejs处理mysql的模块,使用创建连接方法,创建与mysq

Android SQLite最简单demo实现(增删查改)

本来不太想写这篇博客的,但是看到网上的关于android数据库操作的博文都讲得很详细,对于像我这样的新手入门了解SQLite的基本操作有一定难度,所以我参考了网上的一些博客文章,并自己亲自摸索了一遍,希望写出这么一篇博文来记录SQLite的最基本操作,同时也希望能够对android的新手们有些帮助. 参考博客:http://www.20864.com/201247/274.html 这里只是一个示范性的demo,并没实现什么具体功能,只实现了对数据库的增删查改操作. 以下是实现demo的步骤:

mybatis实现简单的增删查改

接触一个新技术,首先去了解它的一些基本概念,这项技术用在什么方面的.这样学习起来,方向性也会更强一些.我对于mybatis的理解是,它是一个封装了JDBC的java框架.所能实现的功能是对数据库进行增删查改的功能. 首先,需要搭建一个demo,用于学习这个框架的使用方式.(1)在IDE上建立自己的工程目录,一个普通的java工程项目就好,我电脑本地的IDE是Myeclipse.(2)引入搭建框架需要的jar包,这个直接去网上搜索就好.(3)框架的核心实现都是基于配置的,引入jar包后,先配置my