C#基礎進階一 高級語法之索引器、單例模式、XML

一、索引器


二、單例模式:只能創建一個對象的類

語法實現步驟:

1、將構造函數私有化,private;

private Form2()
        {
            InitializeComponent();
        }

2、類內部創建一個靜態該類對象的單例,初值爲null;

public static Form2 frmSingle = null;

3、創建一個靜態方法,判斷單例是否爲null,如是,新建一個對象並賦值給單例,返回該單例

public static Form2 GetSingle()
        {
            if (frmSingle == null)
            {
                frmSingle = new Form2();
            }
            return frmSingle;
        }

最後調用此類的靜態方法即可取得此單例

orm2 frm2 = Form2.GetSingle();   //new Form2();
            frm2.Show();

 

三、XML :Extensible Markup Language  可擴展標記語言

HTML(超級文本標記語言)是用來顯示數據的,而XML(可擴展標記語言)是用來存儲數據的,小型數據庫

特點:標籤不固定,可以自由發揮;

與HTML一樣標籤也是成對出現,但是嚴格區分大小寫,必須有一個並且只能有一個根節點

1、通過新建XML文件,手寫進去:

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

<Books>
  
  <Book>
    <Name>冰與火之歌</Name>
    <Price>10</Price>
    <Des>權利的遊戲</Des>
  </Book>

  <Book>
    <Name>三國演義</Name>
    <Price>50</Price>
    <Des>三國鼎立</Des>
  </Book>
  
</Books>

 

2、通過代碼創建XML文檔

1)引入命名空間:---using System.Xml;

2)創建XML文檔對象

XmlDocument doc = new XmlDocument();

3)添加第一行描述信息

XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
            doc.AppendChild(dec);


4)添加根節點

XmlElement books =  doc.CreateElement("Books");
            doc.AppendChild(books);


5)給根節點添加子節點

XmlElement book1 = doc.CreateElement("Book");
            books.AppendChild(book1);
            XmlElement book2 = doc.CreateElement("Book");
            books.AppendChild(book2);

6)給子節點添加信息節點

XmlElement name1 =  doc.CreateElement("Name");
            name1.InnerText = "冰與火之歌";
            book1.AppendChild(name1);
            XmlElement price1 = doc.CreateElement("Price");
            price1.InnerText = "10";
            book1.AppendChild(price1);
            XmlElement des1 = doc.CreateElement("Des");
            des1.InnerText = "權利的遊戲";
            book1.AppendChild(des1);

            XmlElement name2 = doc.CreateElement("Name");
            name2.InnerText = "三國演義";
            book2.AppendChild(name2);
            XmlElement price2 = doc.CreateElement("Price");
            price2.InnerText = "50";
            book2.AppendChild(price2);
            XmlElement des2 = doc.CreateElement("Des");
            des2.InnerText = "三國鼎立";
            book2.AppendChild(des2);

7)保存XML文檔

doc.Save("Books.xml");

 

8)帶屬性的XML

XmlElement orderItem1 = doc.CreateElement("OrderItem"); //子節點1
            //給節點添加屬性
            orderItem1.SetAttribute("Name", "碼錶");
            orderItem1.SetAttribute("Count", "40");
            item.AppendChild(orderItem1);

9)添加內容時有兩種,當需要添加標籤時用

name.InnerXml = "<p>我是一個p標籤</p>"; 

當只是存文本內容時,最好用 Text

number.InnerText = "我是一個p標籤";

 

3、追加XML

也是要先引入命名空間,創建XML文檔對象,然後開始判斷是否存在要追加的文件

if(File.Exists("Books.xml"))

聲明一個根節點:XmlElement books;

1)如果存在:

加載文檔,並獲取XML文檔的根節點

//如存在,加載該文檔
                doc.Load("Books.xml");
                //獲取文檔的根節點
                books = doc.DocumentElement;

然後在根節點中追加子節點

2)如不存在,添加第一行描述信息,添加根節點,與創建XML文檔相同

XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
                doc.AppendChild(dec);
                books = doc.CreateElement("Books");
                doc.AppendChild(books);

3)判斷完成後,將要追加的內容追加到根節點中

同創建XML中的添加子節點

 

4、讀取XML

1)也是要創建一個XML對象,加載要讀取的XML,然後獲取根節點

XmlDocument doc = new XmlDocument();
            //加載要讀取的xml文檔
            doc.Load("Books.xml");
            //獲取XML的根節點
            XmlElement books = doc.DocumentElement;

2)然後根據根節點獲取所有子節點,返回一個節點列表集合

XmlNodeList xnl = books.ChildNodes;


3)遍歷集合就能得到每一項節點的值

foreach (XmlNode item in xnl)
            {
                Console.WriteLine(item.InnerText);
            }

 

5、讀取帶屬性的XML

1)同以上加載XML

2)獲得某一節點下的所有子節點列表結合

XmlNodeList xnl = doc.SelectNodes("/Order/Items/OrderItem"); //獲得某一個節點下所包含的所有子節點

3)遍歷集合,得到每一個子節點中的屬性

foreach (XmlNode node in xnl)
            {
                Console.WriteLine(node.Attributes["Name"].Value);
                Console.WriteLine(node.Attributes["Count"].Value);
            }

4) 可以改變屬性的值:

//獲取該節點
            XmlNode xn = doc.SelectSingleNode("/Order/Items/OrderItem[@Name='碼農']");
            xn.Attributes["Name"].Value = "改變後的Name"; //改變該節點Name屬性的值
            xn.Attributes["Count"].Value = "100";   //改變該節點Count屬性的值
            doc.Save("Order.xml");  //重新保存XML文檔

 

6、刪除XML中的節點

1、同上加載要刪除的XML

2、獲得要刪除的節點的父節點

XmlNode xn = doc.SelectSingleNode("/Order/Items"); //獲取要刪除的節點的父節點


3、刪除此節點下的所有節點:

xn.RemoveAll();

然後重新保存即可

 







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章