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

C#使用XML文件的操作詳解及示例

 更新時間:2024年10月24日 11:45:15   作者:Fountyuan  
XML是 Extensible Markup Language 的簡稱,用于存儲和傳輸數(shù)據(jù)的可擴展標(biāo)記語言,它被應(yīng)用在數(shù)據(jù)交換、數(shù)據(jù)存儲、Web服務(wù)、網(wǎng)絡(luò)協(xié)議等場景,本文給大家介紹了C#使用XML文件的操作詳解及示例,需要的朋友可以參考下

前言

XML是 Extensible Markup Language 的簡稱,用于存儲和傳輸數(shù)據(jù)的可擴展標(biāo)記語言。它被應(yīng)用在數(shù)據(jù)交換、數(shù)據(jù)存儲、Web服務(wù)、網(wǎng)絡(luò)協(xié)議等場景。

XML 具有可擴展性、結(jié)構(gòu)化、標(biāo)準(zhǔn)化、簡單易讀等幾個特點。

基本結(jié)構(gòu)

XML 基本結(jié)構(gòu)包括文檔聲明、根元素、子元素、屬性、注釋、處理指令等部分。

<?xml version="1.0" encoding="UTF-8"?>
<根元素>
  <子元素 屬性="屬性值">內(nèi)容</子元素>
  <!-- 注釋內(nèi)容 -->
  <?處理指令 ?>
</根元素>

文檔聲明

文檔聲明主要用于描述XML文檔的版本編碼格式,每個文檔必須包含一個聲明,并在文檔開頭。如下聲明:版本1.0 編碼格式為UTF-8。

<?xml version="1.0" encoding="UTF-8"?>

根元素

根元素包圍文檔中的所有數(shù)據(jù),是其它元素的根,每個文檔必須有一個根元素。如下示例:有一個configure根元素,其下有其它內(nèi)容。

<configure>
  <Description>Fountain WinForm App</Description>
  <Files>
    <File Version="1.2.11.0" Name="log4net.dll" DateTime="2023-4-26" />
  </Files>
</configure>

子元素

子元素是文檔的基本單元,它包含屬性、內(nèi)容等元素。如下示例:

<name>Apple</name>
 
<File Version="1.2.11.0" Name="log4net.dll" DateTime="2023-4-26" />

屬性

元素可以有屬性,用于元素的額外信息。它在開始標(biāo)簽中定義,以名稱/鍵值對的形式出現(xiàn)。如下示例:File 元素存在Version、Name、DateTime屬性。

<File Version="1.2.11.0" Name="log4net.dll" DateTime="2023-4-26" />

注釋

注釋為文檔中添加注釋或說明,以<!--開始,以-->結(jié)束。如下示例:

<configure>
  <Description>Fountain WinForm App</Description>
  <Files>
    <!-- 程序的所文件名稱、版本、更新日期 -->
    <File Version="1.2.11.0" Name="log4net.dll" DateTime="2023-4-26" />
  </Files>
</configure>

處理指令

處理指令提供了關(guān)于XML處理器如何處理文檔的指令。如下示例:標(biāo)識 文檔的樣式表。

 <?xml-stylesheet type="text/xsl" href="sample.xsl" rel="external nofollow" ?>

命名空間

用于定義文檔中元素和屬性的范圍和作用域的機制。

文檔操作

通過System.XML命名空間中的類可以完成常用的操作。下表為操作XML文檔相關(guān)的類。

描述
XmlDocument創(chuàng)建、修改及保存XML文檔。
XmlNode表示 XML 文檔中的單個節(jié)點
XmlElement訪問元素的名稱、屬性和子元素。
XmlTextWriter提供快速、非緩存的寫入器。
XPathDocument提供只讀形式讀取XML文檔。
XPathNavigator提供瀏覽、提取XML節(jié)點 數(shù)據(jù)
XmlAttribute訪問XML屬性的名稱和值
XmlText訪問文本內(nèi)容

創(chuàng)建文檔

通過 XmlDocument 的 CreateXmlDeclaration 對 XML 文檔進行聲明,再通過 CreateElement 創(chuàng)建 XML 元素,最后保存 XML 文件。下面通過代碼進一步了解 XML 文檔的創(chuàng)建。

using System;
using System.IO;
using System.Windows.Forms;
using System.Xml;
 
namespace Fountain.WinForm.XMLDemo
{
    public partial class XMLDemoForm : Form
    {
        public XMLDemoForm()
        {
            InitializeComponent();
        }
        /// <summary>
        /// 創(chuàng)建文檔
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ButtonCreate_Click(object sender, EventArgs e)
        {
            try
            {
                XmlDocument xmlDocument = new XmlDocument();
                // XML聲明
                XmlDeclaration xmlDeclaration = xmlDocument.CreateXmlDeclaration("1.0", "utf-8", "yes");
                xmlDocument.AppendChild(xmlDeclaration);
                //創(chuàng)建根元素
                XmlElement rootNode = xmlDocument.CreateElement("configure");
                xmlDocument.AppendChild(rootNode);
                // 創(chuàng)建 Description 子元素
                XmlElement descSubElement = xmlDocument.CreateElement("Description");
                //元素內(nèi)容
                descSubElement.InnerText = "Fountain WinForm App";
                rootNode.AppendChild(descSubElement);
 
                // 創(chuàng)建 Updater 子元素
                XmlElement updaterSubElement = xmlDocument.CreateElement("Updater");
                rootNode.AppendChild(updaterSubElement);
 
                // 創(chuàng)建 url 子元素
                XmlElement urlSubElement = xmlDocument.CreateElement("url");
                //中間文本
                urlSubElement.InnerText = "http://127.0.0.1/update";
                // 添加到父結(jié)點
                updaterSubElement.AppendChild(urlSubElement);
 
                XmlElement versionSubElement = xmlDocument.CreateElement("Version");
                //中間文本
                versionSubElement.InnerText = "3.8.0.24043";
                // 添加到父結(jié)點
                updaterSubElement.AppendChild(versionSubElement);
 
                // 創(chuàng)建 Files 子元素
                XmlElement filesSubElement = xmlDocument.CreateElement("Files");
                rootNode.AppendChild(filesSubElement);
                // 創(chuàng)建 File 子元素
                XmlElement fileSubElement = xmlDocument.CreateElement("File");
                // 屬性
                fileSubElement.SetAttribute("Version", "1.2.11.0");
                fileSubElement.SetAttribute("Name", "log4net.dll");
                fileSubElement.SetAttribute("DateTime", DateTime.Now.ToString("yyyy-MM-dd"));
                filesSubElement.AppendChild(fileSubElement);
                // 保存文檔
                xmlDocument.Save(string.Format("{0}{1}{2}", Application.StartupPath,Path.DirectorySeparatorChar, "Version.xml"));
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
}

運行結(jié)果:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<configure>
  <Description>Fountain WinForm App</Description>
  <Updater>
    <url>http://127.0.0.1/update</url>
    <Version>3.8.0.24043</Version>
  </Updater>
  <Files>
    <File Version="1.2.11.0" Name="log4net.dll" DateTime="2024-04-13" />
  </Files>
</configure>

讀取文檔

通過 XmlDocument 的 Load 對 XML 文檔進行加載XML文件,然后通過 SelectSingleNode 得到指定的節(jié)點元素,再通過 GetAttribute 得到具體的屬性值。下面通過代碼進一步了解 XML 文檔的讀取。

using System;
using System.IO;
using System.Text;
using System.Windows.Forms;
using System.Xml;
 
namespace Fountain.WinForm.XMLDemo
{
    public partial class XMLDemoForm : Form
    {
        public XMLDemoForm()
        {
            InitializeComponent();
        }
        /// <summary>
        /// 讀取文檔
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ButtonRead_Click(object sender, EventArgs e)
        {
            try
            {
                XmlDocument xmlDocument = new XmlDocument();
                xmlDocument.Load(string.Format("{0}{1}{2}", Application.StartupPath, Path.DirectorySeparatorChar, "Version.xml"));
                // 獲取 Files
                XmlNode XmlNode = xmlDocument.SelectSingleNode("configure");
                // 得到根節(jié)點的所有子節(jié)點
                XmlNodeList xmlNodeList = XmlNode.ChildNodes;
                StringBuilder stringBuilder = new StringBuilder();
                // 循環(huán)讀取
                foreach (XmlNode xmlNode in xmlNodeList)
                {
                    // 判斷節(jié)點是否有子節(jié)點
                    if (xmlNode.ChildNodes.Count>0)
                    {
                        foreach (XmlNode subXmlNode in xmlNode.ChildNodes)
                        {
                            stringBuilder.AppendLine(string.Format("{0}:{1}", subXmlNode.Name, subXmlNode.InnerText));
                            // 讀取元素屬性
                            if (subXmlNode.Attributes!=null && subXmlNode.Attributes.Count>0)
                            {
                                for (int i = 0; i < subXmlNode.Attributes.Count;i++)
                                {
                                    stringBuilder.AppendLine(string.Format("{0}:{1} 屬性{2}={3}",
                                        subXmlNode.Name, 
                                        subXmlNode.InnerText,
                                        subXmlNode.Attributes[i].Name,
                                        subXmlNode.Attributes[i].Value));
                                }
                            }
                        }
                        continue;
                    }
                    stringBuilder.AppendLine(string.Format("{0}:{1}", xmlNode.Name,xmlNode.InnerText));
                }
                // MessageBox.Show(stringBuilder.ToString());
                Console.WriteLine(stringBuilder.ToString());
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
}

運行結(jié)果:

#text:Fountain WinForm App
url:http://127.0.0.1/update
Version:3.8.0.24043
File:
File: 屬性Version=1.2.11.0
File: 屬性Name=log4net.dll
File: 屬性DateTime=2024-04-13

修改文檔

通過 XmlDocument 的 Load 對 XML 文檔進行加載XML文件,然后讀取到元素節(jié)點,對元素節(jié)點進行刪除、變屬性值、元素文本等,最后保存 XML 文件。下面通過代碼進一步了解 XML 文檔的修改。

using System;
using System.IO;
using System.Text;
using System.Windows.Forms;
using System.Xml;
 
namespace Fountain.WinForm.XMLDemo
{
    public partial class XMLDemoForm : Form
    {
        public XMLDemoForm()
        {
            InitializeComponent();
        }
        /// <summary>
        ///  修改文檔
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ButtonModify_Click(object sender, EventArgs e)
        {
            try
            {
                XmlDocument xmlDocument = new XmlDocument();
                xmlDocument.Load(string.Format("{0}{1}{2}", Application.StartupPath, Path.DirectorySeparatorChar, "Version.xml"));
                // 獲取根元素
                XmlNode rootNode = xmlDocument.DocumentElement;
                // 獲取主信息 
                XmlNodeList xmlNodeList = rootNode.SelectNodes("Updater");
                foreach (XmlNode xmlNodeUpdate in xmlNodeList)
                {
                    XmlNodeList xmlNodeMainInfo = xmlNodeUpdate.ChildNodes;
                    foreach (XmlNode xmlMainInfo in xmlNodeMainInfo)
                    {
                        if ("url".Equals(xmlMainInfo.Name,StringComparison.OrdinalIgnoreCase))
                        {
                            // 刪除 url 元素節(jié)點
                            xmlNodeUpdate.RemoveChild(xmlMainInfo);
                            break;
                        }
                    }
                }
                // 循環(huán)讀取
                foreach (XmlNode xmlNode in xmlNodeList)
                {
                    if (xmlNode.ChildNodes.Count > 0)
                    {
                        foreach (XmlNode subXmlNode in xmlNode.ChildNodes)
                        {
                            if (subXmlNode.Attributes != null && subXmlNode.Attributes.Count > 0)
                            {
                                for (int i = 0; i < subXmlNode.Attributes.Count; i++)
                                {
                                    if ("DateTime".Equals(subXmlNode.Attributes[i].Name,StringComparison.OrdinalIgnoreCase))
                                    {
                                        // 修改元素節(jié)點屬性
                                        subXmlNode.Attributes[i].Value = DateTime.Now.ToString("yyyy-MM-dd");
                                    }
                                }
                            }
                        }
                        continue;
                    }
                }
                xmlDocument.Save(string.Format("{0}{1}{2}", Application.StartupPath, Path.DirectorySeparatorChar, "Version.xml"));
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
}

運行結(jié)果:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<configure>
  <Description>Fountain WinForm App</Description>
  <Updater>
    <Version>3.8.0.24043</Version>
  </Updater>
  <Files>
    <File Version="1.2.11.0" Name="log4net.dll" DateTime="2024-04-13" />
  </Files>
</configure>

小結(jié)

以上 XML 文檔相關(guān)內(nèi)容及在C#中如何實現(xiàn)對文件創(chuàng)建、修改、讀取的操作。希望能幫助大家對XML的應(yīng)用有一定的參考作用。 對 XML 的創(chuàng)建、修改、讀取也有其它方式。后續(xù)對其介紹。

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

相關(guān)文章

最新評論

深州市| 临漳县| 汝州市| 紫阳县| 若尔盖县| 铁岭市| 贡嘎县| 新密市| 海门市| 永丰县| 中卫市| 龙陵县| 文山县| 民权县| 阳山县| 抚宁县| 福州市| 江北区| 尼勒克县| 栾川县| 南澳县| 陆丰市| 米林县| 龙陵县| 贵阳市| 定边县| 固原市| 凤庆县| 清丰县| 桐梓县| 福清市| 司法| 印江| 随州市| 封开县| 汨罗市| 安阳市| 土默特左旗| 太原市| 永嘉县| 大关县|