溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C#中XML文件內(nèi)容增刪改查的方法

發(fā)布時(shí)間:2022-04-02 10:46:18 來源:億速云 閱讀:182 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“C#中XML文件內(nèi)容增刪改查的方法”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

    什么是XML?

    • XML是一種可擴(kuò)展標(biāo)記語言(EXtensible Markup Language)。

    • XML是一種很像HTML的標(biāo)記語言。

    • XML的設(shè)計(jì)宗旨是傳輸數(shù)據(jù),而不是顯示數(shù)據(jù)。

    • XML標(biāo)簽沒有被預(yù)定義。您需要自行定義標(biāo)簽。

    • XML被設(shè)計(jì)為具有自我描述性。

    • XML是 W3C 的推薦標(biāo)準(zhǔn)。

    XML的優(yōu)缺點(diǎn)

    XML的優(yōu)點(diǎn)

    • 語法嚴(yán)謹(jǐn),格式統(tǒng)一,符合標(biāo)準(zhǔn)。

    • 容易與其他系統(tǒng)進(jìn)行遠(yuǎn)程交互,數(shù)據(jù)共享比較方便。

    XML的缺點(diǎn)

    • 擴(kuò)展性、彈性、易讀性均不佳。

    • XML文件龐大,文件格式復(fù)雜,傳輸占帶寬。

    • 服務(wù)器端和客戶端解析XML花費(fèi)較多的資源和時(shí)間。

    XML簡(jiǎn)單示例

    在線xml驗(yàn)證工具

    <?xml version="1.0" encoding="utf-8"?>
    <books>
        <book>
            <author>追逐時(shí)光者</author>
            <title>XML學(xué)習(xí)教程</title>
            <publisher>時(shí)光出版社</publisher>
        </book>
    </books>

    XML中5個(gè)預(yù)定義的實(shí)體引用

    轉(zhuǎn)義字符符號(hào)名稱
    &amp;&和號(hào)
    &lt;<小于
    &gt;>大于
    &apos;'省略號(hào)
    &quot;"引號(hào)

    嚴(yán)格地講,在 XML 中僅有字符 "<"和"&" 是非法的。省略號(hào)、引號(hào)和大于號(hào)是合法的。這時(shí),Xml有兩種解決方案來處理這種問題。

    CDATA

    轉(zhuǎn)義字符

    C#把特殊符號(hào)轉(zhuǎn)換為轉(zhuǎn)義字符

    /// <summary>
            /// 特殊符號(hào)轉(zhuǎn)換為轉(zhuǎn)義字符
            /// </summary>
            /// <param name="xmlStr"></param>
            /// <returns></returns>
            public string XmlSpecialSymbolConvert(string xmlStr)
            {
                return xmlStr.Replace("&", "&amp;").Replace("<", "&lt;").Replace(">", "&gt;").Replace("\'", "&apos;").Replace("\"", "&quot;");
            }

    C#創(chuàng)建簡(jiǎn)單的XML文件  

    /// <summary>
            /// 創(chuàng)建Xml文件
            /// </summary>
            public void CreateXmlFile()
            {
                XmlDocument xmlDoc = new XmlDocument();
                //創(chuàng)建類型聲明節(jié)點(diǎn)  
                XmlNode node = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", "");
                xmlDoc.AppendChild(node);
                //創(chuàng)建Xml根節(jié)點(diǎn)  
                XmlNode root = xmlDoc.CreateElement("books");
                xmlDoc.AppendChild(root);
    
                XmlNode root1 = xmlDoc.CreateElement("book");
                root.AppendChild(root1);
    
                //創(chuàng)建子節(jié)點(diǎn)
                CreateNode(xmlDoc, root1, "author", "追逐時(shí)光者");
                CreateNode(xmlDoc, root1, "title", "XML學(xué)習(xí)教程");
                CreateNode(xmlDoc, root1, "publisher", "時(shí)光出版社");
                //將文件保存到指定位置
                xmlDoc.Save("D://xmlSampleCreateFile.xml");
            }
    
            /// <summary>    
            /// 創(chuàng)建節(jié)點(diǎn)    
            /// </summary>    
            /// <param name="xmlDoc">xml文檔</param>    
            /// <param name="parentNode">Xml父節(jié)點(diǎn)</param>    
            /// <param name="name">節(jié)點(diǎn)名</param>    
            /// <param name="value">節(jié)點(diǎn)值</param>    
            ///   
            public void CreateNode(XmlDocument xmlDoc, XmlNode parentNode, string name, string value)
            {
                //創(chuàng)建對(duì)應(yīng)Xml節(jié)點(diǎn)元素
                XmlNode node = xmlDoc.CreateNode(XmlNodeType.Element, name, null);
                node.InnerText = value;
                parentNode.AppendChild(node);
            }

    創(chuàng)建生成的Xml文件

    <?xml version="1.0" encoding="utf-8"?>
    <books>
      <book>
        <author>追逐時(shí)光者</author>
        <title>XML學(xué)習(xí)教程</title>
        <publisher>時(shí)光出版社</publisher>
      </book>
    </books>

    C#在XML文件添加節(jié)點(diǎn)

    這次我們是在上一次新建的XML文件中做操作,在book二級(jí)節(jié)點(diǎn)下添加一個(gè)新的節(jié)點(diǎn)名為publishdate(發(fā)布時(shí)間),該節(jié)點(diǎn)的value為2022-03-26。

    private static void AppendNode()
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load("D://xmlSampleCreateFile.xml");//加載Xml文件
                XmlNode root = xmlDoc.SelectSingleNode("books/book");//選擇要添加子節(jié)點(diǎn)的book節(jié)點(diǎn)
                //創(chuàng)建一個(gè)新的Xml節(jié)點(diǎn)元素
                XmlNode node = xmlDoc.CreateNode(XmlNodeType.Element, "publishdate", null);
                node.InnerText = "2022-03-26";
                root.AppendChild(node);//將創(chuàng)建的item子節(jié)點(diǎn)添加到items節(jié)點(diǎn)的尾部
                xmlDoc.Save("D://AppendNodeFile.xml");//保存修改的Xml文件內(nèi)容
            }

    添加節(jié)點(diǎn)成功后的XML文件內(nèi)容

    <?xml version="1.0" encoding="utf-8"?>
    <books>
      <book>
        <author>追逐時(shí)光者</author>
        <title>XML學(xué)習(xí)教程</title>
        <publisher>時(shí)光出版社</publisher>
        <publishdate>2022-03-26</publishdate>
      </book>
    </books>

    C#修改XML文件節(jié)點(diǎn)的數(shù)據(jù)

    這次我們是在第一次新建的XML文件中做操作,把在book二級(jí)節(jié)點(diǎn)下的author的內(nèi)容改成:大姚同學(xué)

    private static void UpdateXml()
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load("D://xmlSampleCreateFile.xml");//加載Xml文件
                XmlNode xns = xmlDoc.SelectSingleNode("books/book");//查找要修改的節(jié)點(diǎn)
                XmlNodeList xmlNodeList = xns.ChildNodes;//取出book節(jié)點(diǎn)下所有的子節(jié)點(diǎn)
    
                foreach (XmlNode xmlNode in xmlNodeList)
                {
                    XmlElement xmlElement = (XmlElement)xmlNode;//將節(jié)點(diǎn)轉(zhuǎn)換一下類型
                    if (xmlElement.Name=="author")//判斷該子節(jié)點(diǎn)是否是要查找的節(jié)點(diǎn)
                    {
                        xmlElement.InnerText = "大姚同學(xué)";//設(shè)置新值
                        break;
                    }
                }
                xmlDoc.Save("D://UpdateXml.xml");//保存修改的Xml文件內(nèi)容
            }

    修改后的XML文件內(nèi)容

    <?xml version="1.0" encoding="utf-8"?>
    <books>
      <book>
        <author>大姚同學(xué)</author>
        <title>XML學(xué)習(xí)教程</title>
        <publisher>時(shí)光出版社</publisher>
      </book>
    </books>

    C#刪除XML文件中的指定節(jié)點(diǎn)

    這次我們是在第一次新建的XML文件中做操作,刪除author節(jié)點(diǎn)。

    private static void DeleteXmlNode()
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load("D://xmlSampleCreateFile.xml");//加載Xml文件
                XmlNode xns = xmlDoc.SelectSingleNode("books/book");//查找要?jiǎng)h除的根節(jié)點(diǎn)
    
                #region 刪除author節(jié)點(diǎn)
    
                var delNode = xmlDoc.SelectSingleNode("books/book/" + "author");
                xns.RemoveChild(delNode);
    
                #endregion
    
                xmlDoc.Save("D://DeleteXmlNode.xml");//保存操作后的Xml文件內(nèi)容
            }

    C#清空指定XML節(jié)點(diǎn)數(shù)據(jù)

    這次我們是在第一次新建的XML文件中做操作,清空author節(jié)點(diǎn)下的數(shù)據(jù)。

    private static void ClearDataXmlNode()
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load("D://xmlSampleCreateFile.xml");//加載Xml文件
                XmlNode xns = xmlDoc.SelectSingleNode("books/book");//查找要?jiǎng)h除的根節(jié)點(diǎn)
    
                #region 清空author節(jié)點(diǎn)下的數(shù)據(jù)
                XmlNodeList xmlNodeList = xns.ChildNodes;//取出book節(jié)點(diǎn)下所有的子節(jié)點(diǎn)
                foreach (XmlNode xmlNode in xmlNodeList)
                {
                    XmlElement xmlElement = (XmlElement)xmlNode;//將節(jié)點(diǎn)轉(zhuǎn)換一下類型
                    if (xmlElement.Name == "author")//判斷該子節(jié)點(diǎn)是否是要查找的節(jié)點(diǎn)
                    {
                        //清空author節(jié)點(diǎn)下的數(shù)據(jù)
                        xmlElement.RemoveAll();//刪除該節(jié)點(diǎn)的全部?jī)?nèi)容
                    }
                }
                #endregion
    
                xmlDoc.Save("D://ClearDataXmlNode.xml");//保存操作后的Xml文件內(nèi)容
            }

    “C#中XML文件內(nèi)容增刪改查的方法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    xml
    AI