欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#操作xml文件之Linq To Xml詳解

 更新時間:2022年11月29日 09:05:29   作者:Csharp小記  
Linq To Xml,不看其他,單純的看名字都能感覺到,其可以使用靈活且強(qiáng)大的Linq語法,同時也可以使用lambda以及Xpath定位。本文將利用C#實現(xiàn)操作Linq To Xml,感興趣的可以了解一下

文章描述

之前有寫過讀取xml文件的三個方式,今天再來加一個(其實說寫好久了一直忘記。),即Linq To Xml,其實如果有看過我前面寫的相關(guān)文章的代碼的話,會發(fā)現(xiàn)在需要操作xml的地方,或多或少的都使用了這個方式。

Linq To Xml,不看其他,單純的看名字都能感覺到,其可以使用靈活且強(qiáng)大的Linq語法,同時也可以使用lambda以及Xpath定位。所以,在操作xml文件的選擇上,也是上上之選。

以下就通過之前寫自動更新程序的xml文件拿來做舉例(其實在自動更新程序中已經(jīng)使用過了)。

開發(fā)環(huán)境

.NET Framework版本:4.5

開發(fā)工具

 Visual Studio 2013

實現(xiàn)代碼

 public class XmlHelper
    {
        readonly string _xmlPath;
        public XmlHelper(string xmlPath)
        {
            _xmlPath = xmlPath;
        }

        /// <summary>
        /// 逐級讀取
        /// </summary>
        /// <returns></returns>
        public string ReadUrl()
        {
            XDocument xdoc = XDocument.Load(_xmlPath);
            string url = xdoc.Root.Element("url").Value;
            return url;
        }

        /// <summary>
        /// XPath讀取
        /// </summary>
        /// <returns></returns>
        public string ReadVersion()
        {
            XDocument xdoc = XDocument.Load(_xmlPath);
            string version = xdoc.XPathSelectElement("updateList/version").Value;
            return version;
        }

        /// <summary>
        /// Lambda讀取
        /// </summary>
        /// <returns></returns>
        public string FileNames()
        {
            XDocument xdoc = XDocument.Load(_xmlPath);
            string names = string.Join(",", xdoc.Root.Elements("files").Descendants("file").Select(s => s.Attribute("name").Value));
            return names;
        }

        /// <summary>
        /// linq讀取
        /// </summary>
        /// <returns></returns>
        public string FileVersions()
        {
            XDocument xdoc = XDocument.Load(_xmlPath);
            var versions = from elem in xdoc.Root.Elements("files").Descendants("file") select elem.Attribute("version").Value;
            return string.Join(",", versions);

        }

        /// <summary>
        /// 添加節(jié)點
        /// </summary>
        public void AddFile()
        {
            XDocument xdoc = XDocument.Load(_xmlPath);

            XElement addXele = new XElement("file");
            addXele.SetAttributeValue("name", "test.dll");
            addXele.SetAttributeValue("version", "2.00");

            xdoc.Root.Element("files").Add(addXele);
            xdoc.Save(_xmlPath);
        }

        /// <summary>
        /// 修改節(jié)點
        /// </summary>
        /// <param name="name"></param>
        /// <param name="version"></param>
        public void UpdateFile(string name, string version)
        {
            XDocument xdoc = XDocument.Load(_xmlPath);

            XElement xele = xdoc.Root.Elements("files").Descendants("file").FirstOrDefault(s => s.Attribute("name").Value == name);
            xele.SetAttributeValue("version", version);
            xdoc.Save(_xmlPath);
        }

        /// <summary>
        /// 刪除節(jié)點
        /// </summary>
        /// <param name="name"></param>
        public void DeleteFile(string name)
        {
            XDocument xdoc = XDocument.Load(_xmlPath);
            XElement xele = xdoc.Root.Elements("files").Descendants("file").FirstOrDefault(s => s.Attribute("name").Value == name);
            xele.Remove();
            xdoc.Save(_xmlPath);
        }
    }
string xmlPath = Application.StartupPath + "\\UpdateList.xml";

        private void btn_readxml_Click(object sender, EventArgs e)
        {
            text_xml.Text = File.ReadAllText(xmlPath);
        }

        private void btn_property_Click(object sender, EventArgs e)
        {
            XmlHelper xml = new XmlHelper(xmlPath);
            StringBuilder builder = new StringBuilder();
            builder.AppendLine("Url:" + xml.ReadUrl());
            builder.AppendLine("Version:" + xml.ReadVersion());
            builder.AppendLine("Names:" + xml.FileNames());
            builder.AppendLine("Versions:" + xml.FileVersions());

            text_property.Text = builder.ToString();
        }

        private void btn_add_Click(object sender, EventArgs e)
        {
            XmlHelper xml = new XmlHelper(xmlPath);
            xml.AddFile();
        }

        private void btn_update_Click(object sender, EventArgs e)
        {
            XmlHelper xml = new XmlHelper(xmlPath);
            xml.UpdateFile("test.dll", "3.00");
        }

        private void btn_delete_Click(object sender, EventArgs e)
        {
            XmlHelper xml = new XmlHelper(xmlPath);
            xml.DeleteFile("test.dll");
        }

實現(xiàn)效果

代碼解析:在XmlHelper中,分別使用了linq、lambda和xpath等方式去操作xml文件的節(jié)點,同時無論是從AttributeValue還是value都有做了舉例,基本可以滿足日常使用;Linq To Xml的使用需要引入命名空間using System.Xml.Linq;

到此這篇關(guān)于C#操作xml文件之Linq To Xml詳解的文章就介紹到這了,更多相關(guān)C# Linq To Xml內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Unity 按鈕添加OnClick事件操作

    Unity 按鈕添加OnClick事件操作

    這篇文章主要介紹了Unity 按鈕添加OnClick事件操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • C#檢查鍵盤大小寫鎖定狀態(tài)的方法

    C#檢查鍵盤大小寫鎖定狀態(tài)的方法

    這篇文章主要介紹了C#檢查鍵盤大小寫鎖定狀態(tài)的方法,涉及C#鍵盤操作的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • 基于JWT.NET的使用(詳解)

    基于JWT.NET的使用(詳解)

    下面小編就為大家分享一篇基于JWT.NET的使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • WPF自定義路由事件的實例教程

    WPF自定義路由事件的實例教程

    &#65279;WPF中有兩種事件模型,一種是在WinForm時代就存在的CLR事件,另一種是WPF時代的路由事件,這篇文章主要給大家介紹了關(guān)于WPF自定義路由事件的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • C#實現(xiàn)獲取運(yùn)行平臺系統(tǒng)信息的方法

    C#實現(xiàn)獲取運(yùn)行平臺系統(tǒng)信息的方法

    這篇文章主要介紹了C#實現(xiàn)獲取運(yùn)行平臺系統(tǒng)信息的方法,比較典型的C#應(yīng)用,需要的朋友可以參考下
    2014-07-07
  • 深入理解C#中的枚舉

    深入理解C#中的枚舉

    本篇文章主要是對C#中的枚舉進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • C# 參考之訪問關(guān)鍵字:base、this

    C# 參考之訪問關(guān)鍵字:base、this

    由于靜態(tài)成員函數(shù)存在于類一級,并且不是對象的一部分,因此沒有 this 指針。在靜態(tài)方法中引用 this 是錯誤的。 索引器允許類或結(jié)構(gòu)的實例按照與數(shù)組相同的方式進(jìn)行索引。索引器類似于屬性,不同之處在于它們的訪問器采用參數(shù)。
    2008-03-03
  • C#使用NPOI對word進(jìn)行讀寫

    C#使用NPOI對word進(jìn)行讀寫

    這篇文章介紹了C#使用NPOI對word進(jìn)行讀寫的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C#實現(xiàn)String類型和json之間的相互轉(zhuǎn)換功能示例

    C#實現(xiàn)String類型和json之間的相互轉(zhuǎn)換功能示例

    這篇文章主要介紹了C#實現(xiàn)String類型和json之間的相互轉(zhuǎn)換功能,涉及C# json格式數(shù)據(jù)的構(gòu)造、轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • C#模擬實現(xiàn)鼠標(biāo)自動點擊與消息發(fā)送功能

    C#模擬實現(xiàn)鼠標(biāo)自動點擊與消息發(fā)送功能

    這篇文章主要為大家詳細(xì)介紹了C#如何利用windows api來模擬實現(xiàn)鼠標(biāo)點擊、右擊、雙擊以及發(fā)送文本功能,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-08-08

最新評論