1. 程式人生 > >C#基礎13(xml檔案的CRUD)

C#基礎13(xml檔案的CRUD)

XML檔案(CRUD) 可擴充套件標記語言,標準通用標記語言的子集,是一種用於標記電子檔案使其具有結構性的標記語言。 1.可擴充套件標記語言是一種很像超文字標記語言的標記語言。 2.它的設計宗旨是傳輸資料,而不是顯示資料。 3.它的標籤沒有被預定義。您需要自行定義標籤。 4.它被設計為具有自我描述性。 5.它是W3C的推薦標準。

XML格式:

<?xml version="1.0" encoding="utf-8" ?> 張三 18
湖南長沙

1.<?xml version="1.0" encoding="utf-8" ?> ?XML標記說明它是一個XML文件,version為版本號,encoding屬性表明是編碼格式為”utf-8”,standalone取”yes”時,表明該檔案未引用其它外部檔案。

2. 每個文件必須有有一個根元素,沒有根元素將會在解析的時候出現錯誤

3. id屬於當前Student節點的屬性而值是1

4.XML註釋 < !–註釋內容–>

XML結構列表: XmlDocument XML文件 XmlNode XML中單個的節點,如 XmlAttribute XML元素中的屬性 XmlText 表示元素或屬性的文字內容 XmlElement 最小元素,如張三 XmlComment 表示XML註釋的內容 XmlDeclaration XML文件第一行的宣告

常用物件屬性及方法:

1.XmlDocument物件:主要是針對節點的CUID操作 DocumentElement 屬性 獲取文件的根 ChildNodes 屬性 獲取節點的所有子節點 Name 屬性 獲取節點的限定名稱 Value 屬性 獲取或設定節點的值 Load() 方法 載入整個XML的結構 CreateAttribute 方法 建立具有指定Name的屬性 Save() 方法 將XML文件儲存到指定的位置 CreateXmlDeclaration 方法 建立一個具有指定值的XmlDeclaration節點 AppendChild 方法 將指定的節點新增到該節點的子節點列表的末尾。

2.XmlNode物件:為抽象類,做為以上兩類的基類,提供一些操作節點的方法 InnerText 屬性 當前節點的值 Name 屬性 當前節點的名字 ChildNodes 屬性 當前節點的所有子節點 CreateNode 方法 建立一個新的節點 RemoveAll 方法 移除當前節點的所有子節點和/或屬性

3.XmlElement物件:主要是針對節點的一些屬性進行操作 SelectSingleNode 方法 選擇匹配XPath表示式的第一個XmlNode SelectNode 方法 選擇匹配XPath表示式的XMLNode集合

xml檔案:

<?xml version="1.0" encoding="utf-8" ?>
<!--根節點-->
<Persons>
  <!--子節點-->
  <Person>
    <Name>張三</Name>
    <Age>18</Age>
    <Sex>男</Sex>
  </Person>

</Persons>

測試類:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;

namespace base13
{
    class Program
    {
        static void Main(string[] args)
        {
            #region 獲取子節點
            XmlDocument xmld = new XmlDocument();
            //載入.xml檔案
            xmld.Load("XML1.xml");
            //獲取根節點
            XmlElement root = xmld.DocumentElement;
            //Console.WriteLine(root.ChildNodes.Count);
            //Console.WriteLine(root.Name);
            //遍歷當前節點的所有子節點
            foreach (XmlNode xd in root.ChildNodes)
            {
                if (xd.NodeType != XmlNodeType.Comment)//判讀是否為註釋
                {
                    //遍歷當前節點的子節點
                    foreach (XmlNode cxd in xd.ChildNodes)
                    {
                        Console.WriteLine(cxd.Name);
                    }
                }

            }
            #endregion

            #region 增加節點
            //XmlDocument xmld = new XmlDocument();
            ////載入.xml檔案
            //xmld.Load("XML1.xml");
            ////獲取根節點
            //XmlElement root = xmld.DocumentElement;

            ////建立Person節點
            //XmlElement personxe = xmld.CreateElement("Person");
            ////建立Name節點
            //XmlElement namexe = xmld.CreateElement("Name");
            ////給Name節點賦值
            //namexe.InnerText = "李四";
            ////把Name節點放入Person節點
            //personxe.AppendChild(namexe);

            ////建立Age節點
            //XmlElement agexe = xmld.CreateElement("Age");
            ////給Age節點賦值
            //agexe.InnerText = "19";
            ////把Age節點放入Person節點
            //personxe.AppendChild(agexe);

            ////建立Sex節點
            //XmlElement sexxe = xmld.CreateElement("Sex");
            ////給Sex節點賦值
            //sexxe.InnerText = "女";
            ////把Sex節點放入Person節點
            //personxe.AppendChild(sexxe);

            ////儲存到Persons根節點中
            //root.AppendChild(personxe);
            ////檔案儲存
            //xmld.Save("XML1.xml");

            ////遍歷當前節點的所有子節點
            //foreach (XmlNode xd in root.ChildNodes)
            //{
            //    if (xd.NodeType != XmlNodeType.Comment)//判讀是否為註釋
            //    {
            //        //遍歷當前節點的子節點
            //        foreach (XmlNode cxd in xd.ChildNodes)
            //        {
            //            Console.WriteLine(cxd.Name);
            //        }
            //    }
            //}
            #endregion

            #region 修改
            //XmlDocument xmld = new XmlDocument();
            ////載入.xml檔案
            //xmld.Load("XML1.xml");
            ////獲取根節點
            //XmlElement root = xmld.DocumentElement;
            //bool flag = false;
            //foreach (XmlNode xd in root.ChildNodes)
            //{
            //    //不等於回車跟空格
            //    if (xd.NodeType != XmlNodeType.Comment && xd.NodeType != XmlNodeType.Whitespace)
            //    {
            //        XmlNodeList xmlist = xd.ChildNodes;
            //        if (xmlist.Count > 0)
            //        {
            //            foreach (XmlNode cxd in xmlist)
            //            {
            //                if (cxd.Name.Equals("Name"))
            //                {
            //                    if (cxd.InnerText.Equals("張三"))
            //                    {
            //                        flag = true;
            //                    }
            //                }
            //                if (flag)
            //                {
            //                    if (cxd.Name.Equals("Age"))
            //                    {
            //                        cxd.InnerText = "20";
            //                        break;
            //                    }
            //                }
            //            }
            //        }
            //    }
            //}
            //xmld.Save("XML1.xml");
            //foreach (XmlNode xd in root.ChildNodes)
            //{
            //    if (xd.NodeType != XmlNodeType.Comment)//判讀是否為註釋
            //    {
            //        //遍歷當前節點的子節點
            //        foreach (XmlNode cxd in xd.ChildNodes)
            //        {
            //            Console.WriteLine(cxd.Name);
            //        }
            //    }
            //}

            #endregion

            #region 刪除
            //XmlDocument xmld = new XmlDocument();
            ////載入.xml檔案
            //xmld.Load("XML1.xml");
            ////獲取根節點
            //XmlElement root = xmld.DocumentElement;
            //foreach (XmlNode xd in root.ChildNodes)
            //{
            //    //不等於回車跟空格  ChildNodes屬性  	當前節點的所有子節點
            //    if (xd.NodeType != XmlNodeType.Comment && xd.NodeType != XmlNodeType.Whitespace)
            //    {
            //        foreach (XmlNode cxd in xd.ChildNodes)
            //        {
            //            if (cxd.InnerText.Equals("李四"))
            //            {
            //                cxd.ParentNode.RemoveAll();
            //                root.RemoveChild(cxd);
            //            }
            //        }
            //    }
            //}
            //xmld.Save("XML1.xml");
            #endregion

            #region 節點
            //新增屬性
            //XmlDocument xmld = new XmlDocument();
            //xmld.Load("XML1.xml");
            //XmlElement root= xmld.DocumentElement;
            //新增屬性
            //root.SetAttribute("id","1");
            //xmld.Save("XML1.xml");

            ////改
            ////if (root.GetAttribute("id")!=null)
            ////{
            ////    root.SetAttribute("id","20");
            ////}
            ////刪除
            //root.RemoveAllAttributes();//刪除所有
            //root.RemoveAttribute("c");
            ////查詢
            //Console.WriteLine(root.GetAttribute("id"));
            //xmld.Save("XML1.xml");//儲存
            #endregion

          
        }
    }
}