最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

文章描述

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

Linq To Xml,不看其他,單純的看名字都能感覺到,其可以使用靈活且強大的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)文章

最新評論

梅河口市| 丽江市| 石柱| 巧家县| 镇坪县| 大安市| 桐庐县| 荣昌县| 博客| 裕民县| 玛多县| 景洪市| 吉木萨尔县| 南城县| 泰州市| 正定县| 中阳县| 正蓝旗| 彩票| 巴南区| 双辽市| 商南县| 霞浦县| 金昌市| 南昌市| 黑水县| 临江市| 沂水县| 桐庐县| 麦盖提县| 柳州市| 涞源县| 抚州市| 永州市| 青田县| 仲巴县| 莆田市| 衡东县| 阿克陶县| 孟村| 寿宁县|