LINQ for XML简单示例
LINQ,语言集成查询(Language Integrated Query)是一组用于c#和Visual Basic语言的扩展。它允许开发人员以与查询数据库相同的方式操作内存数据。从技术角度而言,LINQ定义了大约40个查询操作符,如select、from、in、where以及order by(C#中)。使用这些操作符可以编写查询语句。不过,这些查询还可以基于很多类型的数据,每个数据类型都需要一个单独的LINQ类型。
本文简单介绍使用LINQ技术来实现XML的基本操作,该实例包含两个类:XmlElementInfor和XmlHelper,具体代码实现如下:
public class XmlHelper
{
private string _filePath; public XmlHelper(string filePath)
{
_filePath = filePath;
} /// <summary>
/// 创建XML文件
/// </summary>
public void CreateDocument()
{
XDocument xdoc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"),
new XElement("Root"));
xdoc.Save(_filePath);
}
/// <summary>
/// 向XML跟节点中添加元素
/// </summary>
/// <param name="nodeName">元素名称</param>
/// <param name="xelements">元素属性及内容</param>
public void AddXmlNodeToRoot(string nodeName, params object[] xelements)
{
XElement rootNode = XElement.Load(_filePath);
XElement newNode = new XElement(nodeName, xelements);
rootNode.Add(newNode);
rootNode.Save(_filePath);
}
/// <summary>
/// 从XML跟节点删除元素及其子元素
/// </summary>
/// <param name="nodeName">元素名称</param>
/// <param name="IdElement">元素筛选条件</param>
public void DeleteNodeFromRoot(string nodeName, XmlElementInfor IdElement)
{
XElement rootNode = XElement.Load(_filePath); IEnumerable<XElement> targetNodes = from target in rootNode.Descendants(nodeName)
where target.Element(IdElement.Name).Value.Equals(IdElement.Value)
select target;
targetNodes.Remove();
rootNode.Save(_filePath);
}
/// <summary>
/// 更新元素
/// </summary>
/// <param name="nodeName">元素名称</param>
/// <param name="IdElement">元素筛选条件</param>
/// <param name="updateValue">需更新内容</param>
public void UpdateNodeFromRoot(string nodeName, XmlElementInfor IdElement, XmlElementInfor[] updateValue)
{
XElement rootNode = XElement.Load(_filePath);
IEnumerable<XElement> targetNodes = from target in rootNode.Descendants(nodeName)
where target.Element(IdElement.Name).Value.Equals(IdElement.Value)
select target;
foreach (XElement node in targetNodes)
{
foreach (var item in updateValue)
{
node.Element(item.Name).SetValue(item.Value);
}
}
rootNode.Save(_filePath);
}
/// <summary>
/// 从根节点查询元素
/// </summary>
/// <param name="nodeName">元素名称</param>
/// <param name="IdElement">元素筛选条件</param>
/// <returns></returns>
public IEnumerable<XElement> QueryNodeFromRoot(string nodeName, XmlElementInfor IdElement)
{
XElement rootNode = XElement.Load(_filePath);
IEnumerable<XElement> targetNodes = from target in rootNode.Descendants(nodeName)
where target.Element(IdElement.Name).Value.Equals(IdElement.Value)
select target;
return targetNodes;
}
}
XmlHelper
public class XmlElementInfor
{
private string _name;
private string _value; public XmlElementInfor(string elementName, string elementValue)
{
_name = elementName;
_value = elementValue;
} public string Name { get { return _name; } }
public string Value { get { return _value; } }
}
LINQ for XML简单示例的更多相关文章
- C# linq to xml 简单示例
data.xml <?xml version="1.0" encoding="utf-8" ?> <Data> <Products ...
- spring-servlet.xml简单示例
spring-servlet.xml简单示例 某个项目中的spring-servlet.xml 记下来以后研究用 <!-- springMVC简单配置 --> <?xml versi ...
- linq to xml 简单的增、删、改、查、保存xml文件操作
using System; using System.Collections; using System.Configuration; using System.Data; using System. ...
- linq to xml运用示例
代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using Syste ...
- C#操作Xml:linq to xml操作XML
LINQ to XML提供了更方便的读写xml方式.前几篇文章的评论中总有朋友提,你为啥不用linq to xml?现在到时候了,linq to xml出场了. .Net中的System.Xml.Li ...
- linq to xml操作XML(转)
转自:http://www.cnblogs.com/yukaizhao/archive/2011/07/21/linq-to-xml.html LINQ to XML提供了更方便的读写xml方式.前几 ...
- C# 构建XML(简单示例)
C# 构建XML的简单示例: var pars = new Dictionary<string, string> { {"url","https://www. ...
- Linq对XML的简单操作
前两章介绍了关于Linq创建.解析SOAP格式的XML,在实际运用中,可能会对xml进行一些其它的操作,比如基础的增删该查,而操作对象首先需要获取对象,针对于DOM操作来说,Linq确实方便了不少,如 ...
- ACEXML解析XML文件——简单示例程序
掌握了ACMXML库解析XML文件的方法后,下面来实现一个比较完整的程序. 定义基本结构 xml文件格式如下 <?xml version="1.0"?> <roo ...
随机推荐
- ubuntu系统下,gsl 库链接问题 -undefined reference to `cblas_xxx`
今天在ubuntu系统下进行程序调试的时候出现以下错误信息: [ %] Linking CXX executable ../test_coco /usr/local/lib/libgsl.so: un ...
- 阻止事件冒泡,阻止默认事件,event.stopPropagation()和event.preventDefault(),return fal的区别
今天来看看前端的冒泡和事件默认事件如何处理 1.event.stopPropagation()方法 这是阻止事件的冒泡方法,不让事件向documen上蔓延,但是默认事件任然会执行,当你掉用这个方法的时 ...
- ORACLE实验一-三
警告: 创建的触发器带有编译错误. SQL> show error;TRIGGER TRG_SCORE_AFT_ROW 出现错误: LINE/COL ERROR-------- -------- ...
- 也谈面试必备问题之 JavaScript 数组去重
Why underscore (觉得这部分眼熟的可以直接跳到下一段了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. ...
- MySQL主从复制中常见的3个错误及填坑方案
一.问题描述 主从复制错误一直是MySQL DBA一直填不完的坑,如鲠在喉,也有人说mysql主从复制不稳定云云,其实MySQL复制比我们想象中要坚强得多,而绝大部分DBA却认为只要跳过错误继续复制就 ...
- MyBatis的Mapper文件的foreach标签详解
MyBatis的Mapper文件的foreach标签用来迭代用户传递过来的Lise或者Array,让后根据迭代来拼凑或者批量处理数据.如:使用foreach来拼接in子语句. 在学习MyBatis M ...
- 线段树 HDU 3308
t 题目大意:给你n个数,m个操作.操作有两种:1.U x y 将数组第x位变为y 2. Q x y 问数组第x位到第y位连续最长子序列的长度.对于每次询问,输出一个答案 #include< ...
- 一次kibana小问题排查的过程记录
起因 中午业务组同事报告说kibana服务不能正常使用,登录kibana前端查看,网站能够访问,但是页面显示仅有title部分而无内容部分. 排查 首先确认kibana服务是否正常,登录kuberne ...
- 快速上手php:使用PhpStrom部署项目
闲话 上学的时候一直以为可以专注自己的领域,以为与php无缘的,但是这种想法是错误,在完成任务的时候,你不得不使用你不熟悉的语言或者框架.正所谓业务驱动开发,这次接手已经离职的前辈的留下来的项目,最蛋 ...
- Werewolf流程分析
werewolf大致流程 首先是房主创建房间,创建成功以后房主开启web socket连接. 其他成员加入房间,加入房间后新成员和老成员的游戏玩家列表都会更新,然后新成员也要开启web socket连 ...