一、传统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的简单增删查改的更多相关文章

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

    首先添加所需要驱动包(可通过nuget获得) using MongoDB.Bson;using MongoDB.Driver;using MongoDB.Driver.Builders; 一.设置配置 ...

  2. mybatis、spring、mysql、maven实现简单增删查改

    之前写过的mybatis博客作为学习mybatis.spring还是不太合适. 现在找到一个不错的例子,首先将这个完整的mybatis增删查改例子在本地上实现出来,然后再进行学习. 项目结构与运行结果 ...

  3. Elasticsearch8.1-ElasticsearchClient-Java客户端简单增删查改-随笔

    环境准备 Springboot 基本环境 自行前往https://start.spring.io/ 构建一个即可 Elasticsearch服务端 简单说下windows版本的安装  https:// ...

  4. Node.js+Navicat for MySQL实现的简单增删查改

    前提准备: 电脑上必须装有服务器环境,Navicat for MySQL(我用的是这款MySQL,可随意),Node环境 效果如图所示: 源码地址: GitHub:https://github.com ...

  5. linq to xml 增删查改

    一.XML基本概述 XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web.config文件,还有许多重要的场所都有它的身影.Xml是Internet环境 ...

  6. Android平台中实现对XML的三种解析方式

    本文介绍在Android平台中实现对XML的三种解析方式. XML在各种开发中都广泛应用,Android也不例外.作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能. 在 ...

  7. java:Hibernate框架1(环境搭建,Hibernate.cfg.xml中属性含义,Hibernate常用API对象,HibernteUitl,对象生命周期图,数据对象的三种状态,增删查改)

    1.环境搭建: 三个准备+7个步骤 准备1:新建项目并添加hibernate依赖的jar文件  准备2:在classpath下(src目录下)新建hibernate的配置文件:hibernate.cf ...

  8. hibernate基础增删查改简单实例

    hibernate 基础理论知识网上很多,可以百度和google.这里不做多的介绍,以一个User表来开展例子 建一个web-project 我这里用了junit单元测试环境来进行增删查改的测试,别的 ...

  9. 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

    一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...

随机推荐

  1. 返璞归真 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 ...

  2. Cocos2d-x 3.0final 终结者系列教程01-无论是从cocos2d-x2.x升级到版本cocos2d-x3.x

    诡谲的江湖,易变. 花花世界,车来人往. 最终确定.安家,将Cocos2d-x3.0final相关技术精加工的版本.并推出了博客文章, 不为他人,只为自己. 学习交流QQ群:301954471 --- ...

  3. JMS and ActiveMQ first lesson(转)

    JMS and ActiveMQ first lesson -- jms基础概念和应用场景 2011-6-18 PM 9:30 主讲:kimmking <kimmking@163.com> ...

  4. Android - 支持不同的设备 - 支持不同的语言

    把app的字符串放到另外一个文件中是一个好习惯.Android用android工程中的资源文件夹让这件事变的很简单. 如果使用Android SDK Tools创建工程,这个工具会在工程的根目录下创建 ...

  5. MySQL 正則表達式搜索

    products表例如以下: 1. 基本字符匹配 使用正則表達式与LIKE的差别,正則表達式是在整个列搜索,仅仅要prod_name中包括了所搜索的字符就能够了,而LIKE假设不用通配符,那么要求pr ...

  6. POJ 1984 Navigation Nightmare (数据结构-并检查集合)

    Navigation Nightmare Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 4072   Accepted: 1 ...

  7. 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& ...

  8. NBA球员 ESPN前20排名:詹姆斯再居榜首

    2014年 ESPN球员实力最后排名 没想到 保罗-乔治没有上榜.之前预測的火箭两大明星排名落后了,杜兰特排到第8有点出乎意料. 戴维斯升得那么快有点出乎意料,一个球队拥有两位排前十位的球队:骑士,快 ...

  9. WEB功能测试说明

    站点功能測试就是对产品的各功能进行验证.依据功能測试用例,逐项測试.检查产品是否达到用户 要求的功能.经常使用的測试方法例如以下: 1.页面链接检查: 每个链接是否都有相应的页面.而且页面之间切换工具 ...

  10. [课程分享]IT软件项目管理(企业项目甘特如是评价、维护管理、文档管理、风险管理、人力资源管理)

    [课程分享]IT件项目管理(企业项目甘特图案例评价.维护管理.文档管理.风险管理.人力资源管理) 对这个课程有兴趣的朋友能够加我的QQ2059055336和我联系 课程讲师:丁冬博士 课程分类:Jav ...