当前位置: 首页 > 编程日记 > 正文

LINQ to XML 建立,读取,增,删,改

LINQ to XML的出现使得我们再也不需要使用XMLDocument这样复杂的一个个的没有层次感的添加和删除。LINQ可以使的生成的XML文档在内存中错落有致。下面以一个小的例子说名LINQ to XML的简单应用。

  • 需要添加必要的引用。System.XML.Linq , System.XML.Xpath
  • 使用XDocument 建立一个XML文档。XDeclaration 声明开头字样。XComment 添加相应的注释。而XElement则是NODE的名字和内容。
  • 把一个XDocument 存储起来使用Save方法,而读取是Load,参数可以指定所要的路径。
  • 增加 使用Add()方法,新建节点。或者使用LINQ语句配合使用。
  • 读取,可以通过XElement对象的Descendant()的名字,读取相应的node,Value属性是node对应的值,而Name是node的名字。
Code
var userName = from un in xe.Descendants("Name")
select un.Value;

  • 修改可以 使用2种方法。
  1. 其一是直接对Value和Name进行数值的修改。
  2. 使用Replace相关的方法等等。比如
Code
var a = age.Single<XElement>();
a.ReplaceWith(
new XElement("agettt", "26"));
//读取唯一一个,进行名字和数字的修改。

  • 删除一个或者多个node,或者单独删除里面的值而不删除节点名字。可以有多种方法,Remove ,Removeall,RemoveNodes等等方法。

下面是一个完整的控制台程序,以演示简单的增删改功能的实现。是不是比XMLDocument来的简单得多呢,大家赶快试试吧:)

Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Xml.Linq;
using System.Xml.XPath;

namespace LINQTOXMLDEMO
{
class Program
{
staticvoid Main(string[] args)
{
XDocument userInfomation
=new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XComment("This is a comment.Just input what you want to say."),
new XElement("UsersInfomation",
new XElement("User", new XAttribute("ID", "1"),
new XElement("Name", "Alex"),
new XElement("Hometown", "HRB"),
new XElement("Age", "22")),
new XElement("User",
new XAttribute("ID", "2"),
new XElement("Name", "Fu"),
new XElement("Hometown", "SY"),
new XElement("Age", "27")),
new XElement("User",new XAttribute("ID","3"),
new XElement("Name","Abe"),
new XElement("Hometown","HRB"),
new XElement("Age","24"))
));

// 显示所生成的XML在内存中的信息。并且按着所制定的路径保存。
Console.WriteLine(userInfomation);
userInfomation.Save(
@"D:\1\userInfomation.xml");

XElement xd
= XElement.Load(@"D:\1\userInfomation.xml");
GetAllUsername(xd);
Console.WriteLine();
GetAge(xd);
Console.WriteLine();
GetHometown(xd);
Console.WriteLine();
updateAge(xd);
//Console.WriteLine(xd);
deleteElement(xd);
Console.WriteLine();
addNode(xd);
Console.WriteLine(xd);
Console.ReadKey();
}
//得到所有name字段的名字
privatestaticvoid GetAllUsername(XElement xe)
{
var userName
= from un in xe.Descendants("Name")
select un.Value;
foreach (var name in userName)
{
Console.WriteLine(
"name {0}" ,name);
}
}
//输出AGE是24的所有NODE
privatestaticvoid GetAge(XElement xe)
{
var age
= from c in xe.Descendants("Age")
where c.Value =="24"
select c;
foreach (var a in age)
Console.WriteLine(
"AGE: {0}", a);
}
//移除所有的Name字段
privatestaticvoid deleteElement(XElement xe)
{
var user
= from u in xe.Descendants("User")
select u;
foreach (var u in user)
{

var names
= from name in u.Descendants("Name")
select name;
names.Remove();
}
}
//增加节点
privatestaticvoid addNode(XElement xe)
{
var user
= from u in xe.Descendants("User")
select u;
foreach (var u in user)
{
u.Add(
new XElement("Nation","China"));
}
}
//更新字段NODE的名字和内容。
privatestaticvoid updateAge(XElement xe)
{
var age
= from c in xe.Descendants("Age")
where c.Value =="24"
select c;
var a
= age.Single<XElement>();
a.ReplaceWith(
new XElement("agettt", "26"));
}
//统计hometown为HRB的人数
privatestaticvoid GetHometown(XElement xe)
{
var hometown
= from h in xe.Descendants("Hometown")
where h.Value =="HRB"
select h;
int count=0;
foreach (var h in hometown)
{
count
++;
}
Console.WriteLine(count);
}
}
}

几个例子的作用,代码函数都有注释。比较简单。不需要太多的介绍。输出结果如下图所示。

相关文章:

好多Javascript日期选择器呀-6

<script languagejavascript>var DS_x,DS_y; function dateSelector() //构造dateSelector对象&#xff0c;用来实现一个日历形式的日期输入框。{ var myDatenew Date(); this.yearmyDate.getFullYear(); //定义year属性&#xff0c;年份&#xff0c;默认值为当前系…

市值达 58 亿美元,吴恩达的在线教育平台 Coursera 正式上市

整理 | 寇雪芹出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;4 月 1 日&#xff0c;教育科技公司 Coursera 在纽约证券交易所上市&#xff0c;股票代码为 COUR。该股开盘价定为 39 美元 / 股&#xff0c;截至上市当日收盘&#xff0c;股价上涨至 45 美元 / 股&#…

软件包管理RPM

RPM 程序包管理器&#xff0c;可实现对程序包的安装、更新、查询和卸载操作&#xff0c;应用广泛下面通过实际操作来更好的理解RPM的功能安装程序&#xff1a;-i //安装数据包参数-v //显示安装过程-vv //显示更详细的安装信息-h //配合-v更加直观的显示程序安装过程&#…

好多Javascript日期选择器呀-4

<Script LANGUAGE"JavaScript"> var months new Array("一", "二", "三","四", "五", "六", "七", "八", "九","十", "十一", "十二&q…

SUBSTRING函數用法

---引用---從第二位開始,取三位 select SUBSTRING([價格條件],2,3) FROM [Ame_FSC_SEBGCelERP].[dbo].[物料採購價格信息表] SELECT * FROM [Ame_FSC_SEBGCelERP].[dbo].[物料採購價格信息表] update [Ame_FSC_SEBGCelERP].[dbo].[物料採購價格信息表] set [價格條件]SUBSTRI…

英特尔发布智慧社区解决方案,全栈技术支撑,涵盖五大战略方向

疫情的发生加速了城市智能化治理进程&#xff0c;而智慧社区作为其中的重要组成部分&#xff0c;在AI、大数据等技术的助力下&#xff0c;健康防疫追踪、应急管理等需求和应用也因此得到快速发展。 一般来说&#xff0c;打造智慧社区主要有两大目标&#xff0c;一方面&#xf…

OpenGLES 关于 数学 的分支 - 线性变化量、离散量、随机量

关于 数学 的分支 - 线性变化量、离散量、随机量太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es)本文遵循“署名-非商业用途-保持一致”创作公用协议转载请保留此句&#xff1a;太阳火神的漂亮人生 - 本博客专注于 敏捷开发及移动和物联设备研究&#xff1a;iOS、Androi…

好多Javascript日期选择器呀-5

<HTML> <HEAD> <TITLE>最精致的日历式日期输入控件 (Smart Ver 1.00)</TITLE> </HEAD> <style> body {font-size:12px;font-family:"Tahoma"; } td {font-size:12px;font-family:"Tahoma"; } .inputdate {border:1px…

清明出游,你会“鸽”酒店吗?AI 早已看穿一切

来源 | Hyper超神经作者 | 神经小兮头图 | 下载于视觉中国如今&#xff0c;大数据已经被各行各业所应用&#xff0c;酒店行业也不例外。充分利用大数据&#xff0c;使得酒店能够预测市场需求变化&#xff0c;进行智能化决策分析&#xff0c;改善经营状况。各大 OTA&#xff08;…

ti的硬件时钟和系统时钟同步

1.hwclock -w软到硬 hwclock -s硬到软2. 通过ntp网络时钟控制同步3.etc下的localtime文件和GMT-8转载于:https://www.cnblogs.com/pengkunfan/p/3515517.html

来看看BAT在AR领域的布局,你给打几分?

所谓的AR(增强现实)&#xff0c;就是把真实信息和虚拟世界叠加&#xff0c;并使两者具有交互性。换句话说&#xff0c;AR技术不仅让虚拟对象融入到现实世界中&#xff0c;用户还可以对现实世界做出响应。这是一种共生(symbiont)技术&#xff0c;机器与用户的共生。 而当Pokemon…

解决vim没有颜色的办法

首先打开vim&#xff0c;输入命令 scriptnames看看vim加载了哪些脚本。 :scriptnames 输出入下 1: /home/users/xxx/.vimrc2: /home/users/xxx/tools/share/vim/vim73/colors/darkblue.vim3: /home/users/xxx/tools/share/vim/vim73/syntax/syntax.vim4: /home/users/xxx/tools…

好多Javascript日期选择器呀--1

<script languagejavascript>var DS_x,DS_y; function dateSelector() //构造dateSelector对象&#xff0c;用来实现一个日历形式的日期输入框。{ var myDatenew Date(); this.yearmyDate.getFullYear(); //定义year属性&#xff0c;年份&#xff0c;默认值为当前系…

扶贫干部拍胸脯认证,AI开发者上手零门槛,百度打造 “云智一体”全栈开发杀手锏...

“我可以拍着胸脯说识别准确率很高。”扶贫干部刘乐这样评价他在使用百度EasyDL平台助力扶贫的效果&#xff0c;他是陕西省汉中市扶贫信息中心副主任&#xff0c;也是一名热爱编程的程序员。 在近期百度智能云举办的2021云智技术论坛首场活动上&#xff0c;刘乐介绍&#xff0c…

CSS3 新特性

CSS3 是最新的 CSS 标准&#xff0c;并且完全向后兼容&#xff0c;不过目前W3C 仍然在对 CSS3 规范进行开发&#xff0c;虽然标准的规范还没有正式发布&#xff0c;但是现代浏览器已经支持相当多的 CSS3 属性了。CSS3 提供了很多可以把玩的新特性&#xff0c;模糊了之前只控制样…

在.net中使用GDI+来提高gif图片的保存画质

//本文章有www.blue1000.com翻译&#xff0c;原文地址http://codebetter.com/blogs/brendan.tompkins/archive/2004/01/26/6103.aspx //尊重他人劳动成果&#xff0c;转载请注明出处。 写程序的时候经常用到gdi&#xff0c;他可以将一幅深色32 bpp图像保存为一个gif文件&…

随记:kickstart远程批量无人值守安装linux

环境&#xff1a;RHEL6.2组件&#xff1a;dhcp tftp vsftp kickstart原理&#xff1a;需安装linux的客户机通过PXE方式启动&#xff1b;通过dhcp取得IP地址&#xff1b;通过TFTP下载引导进程文件pxelinux.0&#xff0c;内核文件vmlinuz&#xff0c;底层驱动initrd.img&…

第五届全国大学生计算机系统能力培养大赛 | 赠书

全国大学生计算机系统能力培养大赛是由教育部高等学校计算机类专业教学指导委员会和系统能力培养研究专家组共同发起&#xff0c;以学科竞赛推动专业建设和计算机领域创新人才培养体系改革、培育我国高端芯片及核心系统的技术突破与产业化后备人才为目标&#xff0c;面向高校大…

玉山银行的一名新员工“玉山小i随身金融顾问”

市场竞争、监管变化、客户体验一直在对金融行业发起挑战&#xff0c;所以无论监管、竞争、客户都会影响金融行业在成本和服务上的创新&#xff0c;金融行业越来越多的开始利用人工智能去满足现有发展提出的要求。 台湾玉山银行的数字化转型就是一个很好的例子。台湾有一句顺口溜…

DataGridView 密码列(显示为*号)的设置

曾经为在DataGridView中设置密码列&#xff08;显示为*号&#xff09;而发愁&#xff0c;如何把Windows 窗体 DataGridView 的某一列的数据显示为“*”。 哈哈&#xff0c;今天终于搞定了。需要在DataGridView的2个事件中写代码真麻烦&#xff01;下面的代码把第4列设置为密码…

在Android中进行单元测试遇到的问题

问题1、Cannot connect to VM socket closed 在使用JUnit进行测试的时候&#xff0c;遇到这个问题。网上的解释是&#xff1a;使用Eclipse对Java代码进行调试,无论是远程JVM还是本地JVM都会进行Socket通讯.发生这样的错误是由于这些软件会修改winsock,还会监听和占用一些端口&…

英特尔第三代 Ice Lake 发布正面与 AMD EPYC PK,结果令人大跌眼镜!

作者 | 夕颜 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 导读&#xff1a;传闻已久的第三代英特尔至强可扩展处理器&#xff0c;终于在北京风光最美的4月份发布了。 北京时间4月7日晚&#xff0c;在著名的网红打卡地&#xff0c;百年老首钢工厂遗留下的工业建筑…

荣之联“云桥OneBridge”让IT运维事半功倍

近日&#xff0c;荣之联发布“云桥OneBridge”新一代的轻量级企业用户账号管理平台&#xff0c;为企业提供账号全生命周期管理解决方案。“云桥OneBridge”让IT运维工作效率大幅提升&#xff0c;并降低人为差错率&#xff0c;IT运维从此事半功倍。 据介绍&#xff0c;北京荣之联…

自定义GridView分页模板

GridView较之DataGrid提供了更加强大、更加完善的功能&#xff0c;而且具备了丰富的可扩展功能&#xff0c;可以使用GridView提供的pagertemplate自定义分页模板&#xff1a; 事实上&#xff0c;GridView默认的几中分页样式&#xff0c;都是将相关按钮的CommandName设为Page&a…

“雾霾”天里坐看云起时-【软件和信息服务】2014.01

2013年是中国关注雾霾的元年&#xff0c;中国经济高速发展了30多年后&#xff0c;我们终于幡然醒悟&#xff1a;雾霾和各种污染也开始正式进入公众和各级政府的视野。VMware在12月6日召开的VSS上海站并没有因为雾霾肆虐而降低热度&#xff0c;IT界在雾霾天里继续着云中漫步。20…

CSDN 给你一个薅羊毛的机会!你真的不要吗?

抢红包、集福卡、转锦鲤等等&#xff0c;每年过年过节&#xff0c;各种价值几十亿的瓜分活动&#xff0c;对于网络冲浪选手来说&#xff0c;眼花缭乱但也乐趣满满。可现实是&#xff1a;你抢了5毛8&#xff0c;人家抢了好几万&#xff01;甚至前段时间&#xff0c;字节跳动安全…

ASP.NET TricksTip:关于Tooltip(title)的换行问题

我们知道&#xff0c;为了使对于普通 HTML 元素的title可以换行&#xff0c;至少可以有可以两种方式&#xff1a; 1。将title的文本分行写 <a href"#" title"helloworld">hello world</a>2。插入换行符号 <a href"#" title&q…

谷歌高管又变动:AI 研究部门元老即将离职

整理 | 寇雪芹头图 | 下载于视觉中国出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;本周二&#xff0c;谷歌研究院负责人 Samy Bengio 宣布辞职。Samy Bengio 在公司内部邮件中表示自己决定离开谷歌&#xff0c;并将于 4 月 28 日正式离职。目前&#xff0c;Samy Be…

jQuery 1.9 移除了 $.browser 的替代方法

$.browser是通过正则表达式来匹配userAgent来判断浏览器版本和种类的.jquery1.3.2版本的文档中已经声明jquery.browser及jquery.browser.version建议弃用&#xff0c;可以使用jquery.support来代替。jQuery 从 1.9 版开始&#xff0c;移除了 $.browser 和 $.browser.version &a…

异常检测算法:Isolation Forest

iForest &#xff08;Isolation Forest&#xff09;是由Liu et al. [1] 提出来的基于二叉树的ensemble异常检测算法&#xff0c;具有效果好、训练快&#xff08;线性复杂度&#xff09;等特点。 1. 前言 iForest为聚类算法&#xff0c;不需要标记数据训练。首先给出几个定义&am…