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 ...
随机推荐
- Xcode 凝视代码
#pragma mark ---------------凝视信息-------------------- -(void)RequestSP { // MARK: 凝视信息 // TODO: 凝视信息 ...
- hdu1325 Is It A Tree?并检查集合
pid=1325">职务地址 试想一下,在词和话题hdu1272是一样的. 可是hdu1272的博文中我也说了.数据比較水,所以我用非并查集的方法就AC了. 可是这题的数据没那么水,要 ...
- ThinkPad E530 Fedora 20 无线上网问题
它一直在使用 Fedora 家庭 Linux. 但它自带的无线网卡驱动似下一些问题,通常,有时连接,有时你不能. 经常搜索不到的家用无线路由器. 因为家里有网线所以一直没有在意.没什么事就折腾了一下. ...
- CentOS-6.5-x86_64 最小化安装后,怎样安装 man 程序?
CentOS-6.5-x86_64 最小化安装后.怎样安装man 程序? CentOS-6.5-x86_64 最小化安装后,没有man 程序,没它还真的不方便. man 是 manual(手冊)的意思 ...
- .net RPC框架选型(一)
近期开始研究分布式架构,会涉及到一个最核心的组件:RPC(Remote Procedure Call Protocol).这个东西的稳定性与性能,直接决定了分布式架构系统的好坏.RPC技术,我们的产品 ...
- c# 在cmd中用 7z解压缩文件
var exePath = @"C:\Program Files\7-Zip\7z.exe"; var path = @"I:\work\MusicCatcher2\Wi ...
- Windows 2008 R2安装.NET Framework 4提示灾难性故障解决方法
原因:WINDOWS 2008的安全设置方案取消了C盘根目录的Users权限,只给administrator和system权限,结果在打补丁时就无法更新(安装.net4需要安装windows6.1-K ...
- Java的socket服务UDP协议
练习1 接收类 package com.socket.demo; import java.io.IOException; import java.net.DatagramPacket; import ...
- 一个简单的RPC框架
一个 系统模型 二.数据库代码实现 1. mkdir database cd database vim dbInit.c /* * * Database Init tool * */ #include ...
- FastReport的再次使用
FastReport.Net是一款功能齐全的报表分析解决方案. 前两年工作的时候就是使用FastReport进行报表设计,只是当时使用的时候都是调用别人写好的帮助类,直接调用即可.当时让人觉得不明觉厉 ...