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; } }
    }
时间: 2024-10-25 15:45:40

LINQ for XML简单示例的相关文章

C# linq to xml 简单示例

data.xml 1 <?xml version="1.0" encoding="utf-8" ?> 2 <Data> 3 <Products> 4 <Product Name="West Side Story" Price="9.99" SupplierID="1" /> 5 <Product Name="Assassins" Pr

spring-servlet.xml简单示例

spring-servlet.xml简单示例 某个项目中的spring-servlet.xml 记下来以后研究用 1 <!-- springMVC简单配置 --> 2 <?xml version="1.0" encoding="UTF-8"?> 3 <beans xmlns="http://www.springframework.org/schema/beans" 4 xmlns:xsi="http://w

Linq To XML 简单操作

加载xml文件和保存xml文件 XDocument doc = XDocument.Load(Server.MapPath("\\xmlfile\\Book.xml")); doc.Save(Server.MapPath("\\xmlfile\\BookBackup.xml")); 创建元素 XElement xe = new XElement("book",new XElement("bookname","asp.

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

using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using Syste

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

LINQ to XML提供了更方便的读写xml方式.前几篇文章的评论中总有朋友提,你为啥不用linq to xml?现在到时候了,linq to xml出场了. .Net中的System.Xml.Linq命名空间提供了linq to xml的支持.这个命名空间中的XDocument,XElement以及XText,XAttribute提供了读写xml文档的关键方法. 1. 使用linq to xml写xml: 使用XDocument的构造函数可以构造一个Xml文档对象:使用XElement对象可

C# 构建XML(简单示例)

C# 构建XML的简单示例: 1 var pars = new Dictionary<string, string> 2 { 3 {"url","https://www.baidu.com/"}, 4 {"name","jack"}, 5 {"sex","0"}, 6 }; 7 StringWriter sw = new StringWriter(); 8 XmlTextWr

C# — LINQ To XML示例

今天对LINQ To XML的使用进行简单性的测试,代码如下: 第一步:新建一个项目LinqToXMLTest项目,创建一个DealXML.cs文件,加入代码如下: 第二步:运行程序,结果如下: 原文地址:https://www.cnblogs.com/hh8888-log/p/10861961.html

LINQ to XML 编程基础

1.LINQ to XML类 以下的代码演示了如何使用LINQ to XML来快速创建一个xml: 隐藏行号 复制代码 ?创建 XML public static void CreateDocument() { string path = @"d:\website"; XDocument xdoc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"), new XEle

Linq学习随笔二------LINQ to XML

LINQ to XML LINQ to XML provides an in-memory XML programming interface that leverages the .NET Language-Integrated Query (LINQ) Framework. LINQ to XML uses the latest .NET Framework language capabilities and is comparable to an updated, redesigned D