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", "");
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", ""),
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", ""),
new XElement("PetName", "Jimbo"),
new XElement("Color", "Green"),
new XElement("Make", "Xuhang")),
new XElement("Car", new XAttribute("ID", ""),
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=},
new {FristName="Andrew",age=},
new {FristName="Dave",age=},
new {FristName="Sara",age=},
};
//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()),
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", ""),
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
Linq实现对XML的简单增删查改的更多相关文章
- C#实现对mongoDB的简单增删查改
首先添加所需要驱动包(可通过nuget获得) using MongoDB.Bson;using MongoDB.Driver;using MongoDB.Driver.Builders; 一.设置配置 ...
- mybatis、spring、mysql、maven实现简单增删查改
之前写过的mybatis博客作为学习mybatis.spring还是不太合适. 现在找到一个不错的例子,首先将这个完整的mybatis增删查改例子在本地上实现出来,然后再进行学习. 项目结构与运行结果 ...
- Elasticsearch8.1-ElasticsearchClient-Java客户端简单增删查改-随笔
环境准备 Springboot 基本环境 自行前往https://start.spring.io/ 构建一个即可 Elasticsearch服务端 简单说下windows版本的安装 https:// ...
- Node.js+Navicat for MySQL实现的简单增删查改
前提准备: 电脑上必须装有服务器环境,Navicat for MySQL(我用的是这款MySQL,可随意),Node环境 效果如图所示: 源码地址: GitHub:https://github.com ...
- linq to xml 增删查改
一.XML基本概述 XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web.config文件,还有许多重要的场所都有它的身影.Xml是Internet环境 ...
- Android平台中实现对XML的三种解析方式
本文介绍在Android平台中实现对XML的三种解析方式. XML在各种开发中都广泛应用,Android也不例外.作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能. 在 ...
- java:Hibernate框架1(环境搭建,Hibernate.cfg.xml中属性含义,Hibernate常用API对象,HibernteUitl,对象生命周期图,数据对象的三种状态,增删查改)
1.环境搭建: 三个准备+7个步骤 准备1:新建项目并添加hibernate依赖的jar文件 准备2:在classpath下(src目录下)新建hibernate的配置文件:hibernate.cf ...
- hibernate基础增删查改简单实例
hibernate 基础理论知识网上很多,可以百度和google.这里不做多的介绍,以一个User表来开展例子 建一个web-project 我这里用了junit单元测试环境来进行增删查改的测试,别的 ...
- 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】
一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...
随机推荐
- Convert View To Bitmap
public static Bitmap convertViewToBitmap(View view) { view.destroyDrawingCache(); view.measure(View. ...
- 每位iOS开发人员不容错过的10大实用工具
内容简介 1.iOS简介 2.iOS开发十大实用工具之开发环境 3.iOS开发十大实用工具之图标设计 4.iOS开发十大实用工具之原型设计 5.iOS开发十大实用工具之演示工具 6.iOS开发十大实用 ...
- [LeetCode160]Intersection of Two Linked Lists
题目: Write a program to find the node at which the intersection of two singly linked lists begins. ...
- Swift学习资料
http://www.hangge.com/blog/cache/category_72_1.html
- 【原创】构建高性能ASP.NET站点 第五章—性能调优综述(后篇)
原文:[原创]构建高性能ASP.NET站点 第五章-性能调优综述(后篇) 构建高性能ASP.NET站点 第五章—性能调优综述(后篇) 前言:本篇主要讲述如何根据一些简单的工具和简单的现象来粗布的定位站 ...
- java提高篇(十三)-----字符串
可以证明,字符串操作是计算机程序设计中最常见的行为. 一.String 首先我们要明确,String并不是基本数据类型,而是一个对象,并且是不可变的对象.查看源码就会发现String类为f ...
- Reorder List [leetcode] 这两种思路
第一个想法随着vector保存全部Node* 表拼接出来 void reorderList(ListNode *head) { vector<ListNode*> content; Lis ...
- 何时使用SET和SELECT为变量赋值
原文:何时使用SET和SELECT为变量赋值 我们经常使用SET和SELECT来为变量复制,但是有时候,只能选其一来使用,下面来看看这些例子,本例中使用AdventureWorks数据库来做演示. 通 ...
- SWFUpload多文件上传 文件数限制 setStats()
使用swfupload仿公平图片上传 SWFUpload它是基于flash与javascript的client文件上传组件. handlers.js文件 完毕文件入列队(fileQueued) → 完 ...
- 渲染优化 之fixed与返回顶部 以及开启GPU Hack
fixed元素,常见网站右侧出现一个返回顶部的按钮,滚动的时候,会发现返回顶部这个区域在不停的进行重绘,而返回顶部是position:fixed定位的.这也解释了为什么fixed定位是最耗性能的属性之 ...