1、单例模式
1)将构造函数私有化
2)提供一个静态方法,返回一个对象
3)创建一个单例
1 namespace 单例模式 2 { 3 public partial class Form1 : Form 4 { 5 public Form1() 6 { 7 InitializeComponent(); 8 } 9 10 private void button1_Click(object sender, EventArgs e) 11 { 12 Form2 f2 = Form2.GetSingle(); 13 f2.Show(); 14 } 15 } 16 }
1 namespace 单例模式 2 { 3 public partial class Form2 : Form 4 { 5 //全局唯一的单例(只能打开一个窗体) 6 public static Form2 _FormSingle = null; 7 private Form2() 8 { 9 InitializeComponent(); 10 } 11 public static Form2 GetSingle() 12 { 13 if (_FormSingle==null) 14 { 15 _FormSingle = new Form2(); 16 } 17 return _FormSingle; 18 } 19 20 } 21 }
2、XML 可扩展的标记语言
XML:存储数据 注意:XML是严格区分大小写的,XML标签也是成对出现的
XML有且只能有一个根节点
元素:
节点:
在实际的应用开发中需要我们对xml进行添加节点和属性,动态的去完成,在这之前,先看看XmlNode和XmlElement之间的关系
1)、XmlElement继承XmlLinkedNode又继承XmlNode,所以XmlElement是XmlNode的子集,那么从继承的关系来说,XmlNode的属性,XmlElement也可以使用。
2)、XmlNode是.Net提供的抽象类,不能直接实例化,只能通过XmlDocument的CreateNode方法来创建,但是XmlElement则不需要,可以直接实例化创建
3)、为节点添加属性的时候,可以直接通过XmlElement的SetAttribute来添加,也可以通过XmlNode的Attribute的add方法来添加,同样添加文本节点的时候也是如此
4)、XmlDocument是XmlNode的扩展类,包含了很多XmlNode没有的方法和属性,我们可以通过它将xml加载到内存中通过Dom来处理,也可以通过它来创建节点等
下面就来看看如何添加节点和属性
1)、首先我们需要创建一个节点元素,创建的时候我们可以通过XmlDocument的CreateElement来创建,或者是通过
XmlElement直接实例化,然后通过属性赋值,比如Name
2)、创建一个XmlNode,也就是说创建的节点需要放在什么位置,然后创建的节点加入该XmlNode后面就可以了(可以通过
XmlNode的AppendChild方法来添加),比如加入根目录下面:XmlDocument.DocumentElement.PrependChild
(XmlElement),如果是其他节点下,可以通过Xmldocument的SelectSingleNode("//Titles//Title")来获得XmlNode
3)、添加属性的时候,可以直接在创建XmlElment的时候,通过XmlElement的SetAttribute来为节点创建属性,或者是创建
一个XmlAttribute实例:XmlAttribute xmlArr=XmlDocument.CreateAttribute("属性值"),然后通过XmlNode的
Attributes.add(XmlArribute)来添加
创建XML:
1 namespace 创建XML 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 //通过代码来创建XML文档 8 //1.引用命名空间 9 //2.创建XML文档对象 10 XmlDocument doc = new XmlDocument(); 11 //3.创建第一行描述信息,并且添加到doc文档中 12 XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null); 13 doc.AppendChild(dec); 14 //4.创建根节点 15 XmlElement books = doc.CreateElement("Books"); 16 //将根节点添加到文档中 17 doc.AppendChild(books); 18 //5.给根节点Books创建子节点 19 XmlElement book1 = doc.CreateElement("Book"); 20 //将book添加到根节点 21 books.AppendChild(book1); 22 //6.给book1添加子节点 23 XmlElement name1 = doc.CreateElement("Name"); 24 name1.InnerText = "西游记"; 25 book1.AppendChild(name1); 26 XmlElement price1 = doc.CreateElement("Price"); 27 price1.InnerText = "10"; 28 book1.AppendChild(price1); 29 XmlElement des1 = doc.CreateElement("Des"); 30 des1.InnerText = "好看"; 31 book1.AppendChild(des1); 32 33 34 XmlElement book2 = doc.CreateElement("Book"); 35 books.AppendChild(book2); 36 XmlElement name2 = doc.CreateElement("Name"); 37 name2.InnerText = "水浒传"; 38 book2.AppendChild(name2); 39 XmlElement price2 = doc.CreateElement("Price"); 40 price2.InnerText = "20"; 41 book2.AppendChild(price2); 42 XmlElement des2 = doc.CreateElement("Des"); 43 des2.InnerText = "好好好"; 44 book2.AppendChild(des2); 45 46 doc.Save("Books.xml"); 47 Console.WriteLine("保存成功"); 48 Console.ReadKey(); 49 } 50 } 51 }
创建带属性的XML:
1 namespace 创建带属性的XML 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 XmlDocument doc = new XmlDocument(); 8 XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null); 9 doc.AppendChild(dec); 10 11 XmlElement order = doc.CreateElement("Order"); 12 doc.AppendChild(order); 13 XmlElement CustomerName = doc.CreateElement("CustomerName"); 14 //CustomerName.InnerXml = "<p>我是一个标签</p>"; 15 CustomerName.InnerXml = "<p>我是一个p标签</p>"; 16 order.AppendChild(CustomerName); 17 XmlElement CustomerNumber = doc.CreateElement("CustomerNumber"); 18 CustomerNumber.InnerText = "<p>我是一个标签</P>"; 19 order.AppendChild(CustomerNumber); 20 XmlElement items = doc.CreateElement("Items"); 21 order.AppendChild(items); 22 23 XmlElement orderItem1 = doc.CreateElement("OrderItem"); 24 //给节点添加属性 25 orderItem1.SetAttribute("Name", "西游记"); 26 orderItem1.SetAttribute("Count", "10"); 27 items.AppendChild(orderItem1); 28 XmlElement orderItem2 = doc.CreateElement("OrderItem"); 29 //给节点添加属性 30 orderItem2.SetAttribute("Name", "西游记"); 31 orderItem2.SetAttribute("Count", "10"); 32 items.AppendChild(orderItem2); 33 XmlElement orderItem3 = doc.CreateElement("OrderItem"); 34 //给节点添加属性 35 orderItem3.SetAttribute("Name", "西游记"); 36 orderItem3.SetAttribute("Count", "10"); 37 items.AppendChild(orderItem3); 38 doc.Save("Order.xml"); 39 Console.WriteLine("保存成功"); 40 Console.ReadKey(); 41 } 42 } 43 }
读取XML:
1 namespace 读取XML 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 XmlDocument doc = new XmlDocument(); 8 //加载需要读取的xml 9 doc.Load("Books.xml"); 10 //获得根节点 11 XmlElement books = doc.DocumentElement; 12 //获得子节点 13 XmlNodeList xnl = books.ChildNodes; 14 foreach (XmlNode item in xnl) 15 { 16 Console.WriteLine(item.InnerText); 17 } 18 Console.ReadKey(); 19 } 20 } 21 }
读取带属性的XML
1 namespace 读取带属性的XML 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 XmlDocument doc = new XmlDocument(); 8 doc.Load("Order.xml"); 9 XmlNodeList xnl = doc.SelectNodes("/Order/Items/OrderItem"); 10 foreach (XmlNode node in xnl) 11 { 12 Console.WriteLine(node.Attributes["Name"].Value); 13 Console.WriteLine(node.Attributes["Count"].Value); 14 } 15 Console.ReadKey(); 16 } 17 } 18 }
删除节点:
1 namespace 删除节点 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 XmlDocument doc = new XmlDocument(); 8 doc.Load("Order.xml"); 9 XmlNode xn = doc.SelectSingleNode("/Order/Items"); 10 xn.RemoveAll(); 11 doc.Save("Order.xml"); 12 Console.WriteLine("删除成功 "); 13 } 14 } 15 }
追加XML:
1 namespace 追加XML 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 //追加XML文档 8 XmlDocument doc = new XmlDocument(); 9 XmlElement books; 10 if (File.Exists("Books.xml")) 11 { 12 //如果文件存在 加载XML 13 doc.Load("Books.xml"); 14 //获得文件的根节点 15 books = doc.DocumentElement; 16 17 } 18 else 19 { 20 //如果文件不存在 21 //创建第一行 22 XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null); 23 doc.AppendChild(dec); 24 //创建根节点 25 books = doc.CreateElement("Books"); 26 doc.AppendChild(books); 27 28 } 29 //5.给根节点Books创建子节点 30 XmlElement book1 = doc.CreateElement("Book"); 31 //将book添加到根节点 32 books.AppendChild(book1); 33 //6.给book1添加子节点 34 XmlElement name1 = doc.CreateElement("Name"); 35 name1.InnerText = "西游记"; 36 book1.AppendChild(name1); 37 XmlElement price1 = doc.CreateElement("Price"); 38 price1.InnerText = "10"; 39 book1.AppendChild(price1); 40 XmlElement des1 = doc.CreateElement("Des"); 41 des1.InnerText = "好看"; 42 book1.AppendChild(des1); 43 44 doc.Save("Books.xml"); 45 } 46 } 47 }