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简单示例的更多相关文章

  1. C# linq to xml 简单示例

    data.xml <?xml version="1.0" encoding="utf-8" ?> <Data> <Products ...

  2. spring-servlet.xml简单示例

    spring-servlet.xml简单示例 某个项目中的spring-servlet.xml 记下来以后研究用 <!-- springMVC简单配置 --> <?xml versi ...

  3. linq to xml 简单的增、删、改、查、保存xml文件操作

    using System; using System.Collections; using System.Configuration; using System.Data; using System. ...

  4. linq to xml运用示例

    代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using Syste ...

  5. C#操作Xml:linq to xml操作XML

    LINQ to XML提供了更方便的读写xml方式.前几篇文章的评论中总有朋友提,你为啥不用linq to xml?现在到时候了,linq to xml出场了. .Net中的System.Xml.Li ...

  6. linq to xml操作XML(转)

    转自:http://www.cnblogs.com/yukaizhao/archive/2011/07/21/linq-to-xml.html LINQ to XML提供了更方便的读写xml方式.前几 ...

  7. C# 构建XML(简单示例)

    C# 构建XML的简单示例: var pars = new Dictionary<string, string> { {"url","https://www. ...

  8. Linq对XML的简单操作

    前两章介绍了关于Linq创建.解析SOAP格式的XML,在实际运用中,可能会对xml进行一些其它的操作,比如基础的增删该查,而操作对象首先需要获取对象,针对于DOM操作来说,Linq确实方便了不少,如 ...

  9. ACEXML解析XML文件——简单示例程序

    掌握了ACMXML库解析XML文件的方法后,下面来实现一个比较完整的程序. 定义基本结构 xml文件格式如下 <?xml version="1.0"?> <roo ...

随机推荐

  1. NOIP2013货车运输[lca&&kruskal]

    题目描述 A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多 ...

  2. [转载]彻底弄清struct和typedef struct

    struct和typedef struct 分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int ...

  3. 用C#调用C++DLL(x64),总是提示找不到DLL

    用C#调用自己写的C++ DLL(x64),总是提示找不到DLL,调试可以,发布release老是提示找不到DLL(dll文件确定存在) 原因:Visual C++的DLL分发方式没选:调试默认选择: ...

  4. git提交时支持文件名大小写的修改

    在windows环境下,git提交文件时,默认对文件名大小写不敏感,若修改了文件名字的大小写,可能会导致提交时没有记录,文件名修改不成功.网上搜集了几种解决方法,现总结下: 1. 修改git conf ...

  5. window.open和window.location.href的几种用法

    windows.open("URL","窗口名称","窗口外观设定"); <A href="javascript:windo ...

  6. 析构函数virtual与非virtual区别 [转]

    作为通常的原则,如果一个类定义了虚函数,那么它的析构函数就应当是virtual的.因为定义了虚函数则隐含着:这个类会被继承,并且会通过基类的指针指向子类对象,从而得到多态性.   这个类可能会被继承, ...

  7. VMware网络设置详解

    标签: 网络vmware虚拟机web服务network 2009-05-19 22:23 27537人阅读 评论(7) 收藏 举报 分类: 基于类linux的开发(171) 我们知道,VMwareWo ...

  8. 79 umount-卸除目前挂在Linux目录中的文件系统

    Linux umount命令用于卸除文件系统. umount可卸除目前挂在Linux目录中的文件系统. 语法 umount [-ahnrvV][-t <文件系统类型>][文件系统] 参数: ...

  9. elk的搭建----待续

    http://yanliu.org/2015/08/19/ELK-redis%E6%90%AD%E5%BB%BAnginx%E6%97%A5%E5%BF%97%E5%88%86%E6%9E%90%E5 ...

  10. JavaScript零基础学习系列三

    函数 函数:为了完成某个功能而定义的代码的集体.函数是数据类型,只读的对象:函数也是对象:代码的重用.(JavaScript中) 定义语法:function 函数名(形式参数1,形式参数2--){ / ...