C#第十三天

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 }

时间: 2024-12-07 11:26:38

C#第十三天的相关文章

winform学习日志(二十三)---------------socket(TCP)发送文件

一:由于在上一个随笔的基础之上拓展的所以直接上代码,客户端: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net.Sockets; using Sys

算法系列之二十三:离散傅立叶变换之音频播放与频谱显示

算法系列之二十三:离散傅立叶变换之音频播放与频谱显示 算法系列之二十三离散傅立叶变换之音频播放与频谱显示 导语 什么是频谱 1 频谱的原理 2 频谱的选择 3 频谱的计算 显示动态频谱 1 实现方法 2 杂项说明 结果展示 导语 频谱和均衡器,几乎是媒体播放程序的必备物件,没有这两个功能的媒体播放程序会被认为不够专业,现在主流的播放器都具备这两个功能,foobar 2000的十八段均衡器就曾经让很多人着迷.在上一篇对离散傅立叶变换介绍的基础上,本篇就进一步介绍一下频谱是怎么回事儿,下一篇继续介绍

UI标签库专题十三:JEECG智能开发平台 ckfinder(ckfinder插件标签)

1. ckfinder(ckfinder插件标签) 1.1. 参数 属性名 类型 描述 是否必须 默认值 name string 属性名称 是 null value string 默认值 否 null width string 显示图片宽(上传类型为Images时) 否 null height string 显示图片高(上传类型为Images时) 否 null buttonClass string 按钮样式 否 null buttonValue string 按钮文本 否 null upload

QT开发(六十三)——QT事件机制分析

QT开发(六十三)--QT事件机制分析 一.事件机制 事件是由系统或者QT平台本身在不同的时刻发出的.当用户按下鼠标.敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件.一些事件在对用户操作做出响应时发出,如键盘事件等:另一些事件则是由系统自动发出,如计时器事件. 事件的出现,使得程序代码不会按照原始的线性顺序执行.线性顺序的程序设计风格不适合处理复杂的用户交互,如用户交互过程中,用户点击"打开文件"将开始执行打开文件的操作,用户点击"保存文件"将开始执

【第五组】第十三次冲刺例会纪要 2017/7/26

第十三次冲刺例会纪要 开发小组:Hunger Killer 冲刺经理:衣俊霖 小组成员:张竣杰,董泽昊,赵美,宋寅瑜,徐志国 A:张竣杰 负责部分:管理员界面 昨日所做工作:研究关于下拉列表刷新问题 遇到的问题:尚未解决 今日计划:尝试解决,优化界面 B:衣俊霖 负责部分:注册界面 昨日所做工作:记住密码已实现,优化界面 遇到的问题:构思用户服务的函数 今日计划:写用户服务,写登录后端 C:董泽昊 负责部分:趣味决策 昨日所做工作:图片上传显示解决 遇到的问题:界面急需优化 今日计划:链接真·数

javascript高级程序设计 第十三章--事件

javascript高级程序设计 第十三章--事件js与HTML的交互就是通过事件实现的,事件就是文档或浏览器窗口中发生的一些特定的交互瞬间. 事件流:事件流描述的是从页面中接收事件的顺序,IE的是事件冒泡流,Netscape的是事件捕获流,这个两个是完全相反的事件流概念. 事件冒泡:由最具体的元素接收,然后逐级向上传播到更高级的节点,即事件沿DOM树向上传播,直到document对象. 事件捕获:不大具体的节点应该更早接收到事件,相当于沿DOM节点树向下级传播直到事件的实际目标,在浏览器中,是

嵌入式Linux裸机开发(十三)——I2C通信

嵌入式Linux裸机开发(十三)--I2C通信 一.IIC协议 1.IIC总线简介 I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备.I2C总线是一种串行数据总线,只有二根信号线,一根是双向的数据线SDA,另一根是时钟线SCL.在 I2C总线上传送的一个数据字节由八位组成.总线对每次传送的字节数没有限制,但每个字节后必须跟一位应答位. IIC总线是一种串行总线,用于连接微控制器及其外围设备,具有以下特点:

第十三周学习进度条

第十三周 所花时间(包括上课) 11 代码量(行) 100 博客量(篇) 3       了解到的知识点 通过这周学习到了: 1.这周老师讲到了软件工程质量,了解到了CMMI的概念,企业的发展与实力与其密切相关:软件的发布管理了解到即使优秀的团队也会发布有已知缺陷的软件,在发布后要有会诊小组针对具体bug进行修复.老师留下了一个论坛找小水王的编程题目,提到了减少时间复杂度来寻找,采用了计数器,编写并学习其中的思想 2.在团队开发中,这周有一门考试所以进展并不是那么大,仍旧在进行亮屏后直接进行拍照

学习进度第十三周

  第十三周 所花时间(包括上课) 16h(4h上课,12课下) 代码量(行) 460 博客量(篇) 4 了解到的知识点 1.这个星期主要进行了一次小水王的编程,回想起来很简单,但当初真的把它想得太复杂了. 明白了用最简单的方法解决问题,哪怕重复部分太多,代码量太多,也是一种好方法,比如这次小水王就是 一连串的if else 就解决了问题. 2.开始了软件工程团队开发的第二阶段的冲刺,明白了蓝牙权限和蓝牙数据传输的方法. 3.在java EE 的实验编程中,学习了MVC 框架,Struts 框架

学习进度条 第十三周

  第十三周 所花时间(H) 周一上课2小时 周四上课2小时 平均每天编程时间2小时 合计18小时 代码量(行) 1000 博客量(篇) 2 了解到的知识点 字符串头文件的各种函数(比如查找函数find()) 安卓透明提示层的创建等