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 ...
随机推荐
- jQuery插件主要有两种扩展方式
jQuery插件主要有两种扩展方式: 扩展全局函数方式. 扩展对象方法方式. 扩展全局函数方式 扩展全局函数方式定义的插件,即类级别插件,可以通过jQuery.extend()来进行定义.定义格式为: ...
- 了解HTML5和“她”的 API (二)
Communication(通信) Cross Document Messaging (跨文档消息通信) postMessage API origin security(源安全) chat ...
- Win10打不开chm文件的解决办法
在Win10系统中打开chm文件时,提示安全警告,如下图: 点击打开后,可以看到chm文件的目录大纲,但是点击任意目录其内容都是空白,如下图: 经过网络一通搜索,发现解决办法很简单,就是在上面的安装警 ...
- AFHTTPRequestOperationManager当一个网络请求加入菊花
问: Can you help me to understand, how to use UIActivityIndicatorView+AFNetworking or UIProgressView+ ...
- CSS——(2)与标准流盒模型
部分博客<CSS--(1)基础>中简介了CSS的概念和几种用法,如今主要是介绍其的核心内容. 盒子模型 为了理解盒子模型,我们能够先从生活中的盒子入手.盒子是用来放置物品的,内部除了有物品 ...
- android 更新实现自己主动
其主要原理是: 在应用程序启动.取server在版本 , 以下这个是获取当前应用的版本号信息 private void getCurVersion() { try { PackageInfo pInf ...
- 人迹罕至的android要完全退出程序的一种方法
最近的一个项目,无意中发现了一个方法,使android要完全退出程序的一种方法,遥想当年,以便找到让的有效途径android遇险完全退出程序,我不由得有些感慨. 在这里,不敢独享.和大家分享一下,还启 ...
- 【C++知识汇总】运营商 & 运算符重载
[运算符] 在进行运算时,假设右括号的话我们知道先运算哪个,那假设没有括号了.算术运算符,关系运算符,逻辑运算符,位运算符.赋值运算符,++.--运算符等等,那么多的运算符.我们先算哪边 ...
- 使用Visual Studio 2010写Data Url生成工具C#版本
声明:本文系本人按照真实经历原创.未经许可,谢绝转载. 此文百度经验版本号:怎样用Visual Studio 2010打造Data Url生成工具 源代码下载:用Visual Studio 2010编 ...
- 使用Eclipse设定Android开发环境
使用Eclipse设定Android开发环境 花了大概几天的时间最终搭建好了开发Android的环境了! 我是使用Eclipse +ADT顺利地搭建Android开发环境的. 如今Google以及An ...