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 ...
随机推荐
- 返璞归真 asp.net mvc (9) - asp.net mvc 3.0 新特性之 View(Razor)
原文:返璞归真 asp.net mvc (9) - asp.net mvc 3.0 新特性之 View(Razor) [索引页][源码下载] 返璞归真 asp.net mvc (9) - asp.ne ...
- Cocos2d-x 3.0final 终结者系列教程01-无论是从cocos2d-x2.x升级到版本cocos2d-x3.x
诡谲的江湖,易变. 花花世界,车来人往. 最终确定.安家,将Cocos2d-x3.0final相关技术精加工的版本.并推出了博客文章, 不为他人,只为自己. 学习交流QQ群:301954471 --- ...
- JMS and ActiveMQ first lesson(转)
JMS and ActiveMQ first lesson -- jms基础概念和应用场景 2011-6-18 PM 9:30 主讲:kimmking <kimmking@163.com> ...
- Android - 支持不同的设备 - 支持不同的语言
把app的字符串放到另外一个文件中是一个好习惯.Android用android工程中的资源文件夹让这件事变的很简单. 如果使用Android SDK Tools创建工程,这个工具会在工程的根目录下创建 ...
- MySQL 正則表達式搜索
products表例如以下: 1. 基本字符匹配 使用正則表達式与LIKE的差别,正則表達式是在整个列搜索,仅仅要prod_name中包括了所搜索的字符就能够了,而LIKE假设不用通配符,那么要求pr ...
- POJ 1984 Navigation Nightmare (数据结构-并检查集合)
Navigation Nightmare Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 4072 Accepted: 1 ...
- PKU A Simple Problem with Integers (段树更新间隔总和)
意甲冠军:一个典型的段树C,Q问题,有n的数量a[i] (1~n),C, a, b,c在[a,b]加c Q a b 求[a,b]的和. #include<cstdio> #include& ...
- NBA球员 ESPN前20排名:詹姆斯再居榜首
2014年 ESPN球员实力最后排名 没想到 保罗-乔治没有上榜.之前预測的火箭两大明星排名落后了,杜兰特排到第8有点出乎意料. 戴维斯升得那么快有点出乎意料,一个球队拥有两位排前十位的球队:骑士,快 ...
- WEB功能测试说明
站点功能測试就是对产品的各功能进行验证.依据功能測试用例,逐项測试.检查产品是否达到用户 要求的功能.经常使用的測试方法例如以下: 1.页面链接检查: 每个链接是否都有相应的页面.而且页面之间切换工具 ...
- [课程分享]IT软件项目管理(企业项目甘特如是评价、维护管理、文档管理、风险管理、人力资源管理)
[课程分享]IT件项目管理(企业项目甘特图案例评价.维护管理.文档管理.风险管理.人力资源管理) 对这个课程有兴趣的朋友能够加我的QQ2059055336和我联系 课程讲师:丁冬博士 课程分类:Jav ...