C#第十三天
1、单例模式
1)将构造函数私有化
2)提供一个静态方法,返回一个对象
3)创建一个单例
namespace 单例模式
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = Form2.GetSingle();
f2.Show();
}
}
}
namespace 单例模式
{
public partial class Form2 : Form
{
//全局唯一的单例(只能打开一个窗体)
public static Form2 _FormSingle = null;
private Form2()
{
InitializeComponent();
}
public static Form2 GetSingle()
{
if (_FormSingle==null)
{
_FormSingle = new Form2();
}
return _FormSingle;
} }
}
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:
namespace 创建XML
{
class Program
{
static void Main(string[] args)
{
//通过代码来创建XML文档
//1.引用命名空间
//2.创建XML文档对象
XmlDocument doc = new XmlDocument();
//3.创建第一行描述信息,并且添加到doc文档中
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
doc.AppendChild(dec);
//4.创建根节点
XmlElement books = doc.CreateElement("Books");
//将根节点添加到文档中
doc.AppendChild(books);
//5.给根节点Books创建子节点
XmlElement book1 = doc.CreateElement("Book");
//将book添加到根节点
books.AppendChild(book1);
//6.给book1添加子节点
XmlElement name1 = doc.CreateElement("Name");
name1.InnerText = "西游记";
book1.AppendChild(name1);
XmlElement price1 = doc.CreateElement("Price");
price1.InnerText = "";
book1.AppendChild(price1);
XmlElement des1 = doc.CreateElement("Des");
des1.InnerText = "好看";
book1.AppendChild(des1); XmlElement book2 = doc.CreateElement("Book");
books.AppendChild(book2);
XmlElement name2 = doc.CreateElement("Name");
name2.InnerText = "水浒传";
book2.AppendChild(name2);
XmlElement price2 = doc.CreateElement("Price");
price2.InnerText = "";
book2.AppendChild(price2);
XmlElement des2 = doc.CreateElement("Des");
des2.InnerText = "好好好";
book2.AppendChild(des2); doc.Save("Books.xml");
Console.WriteLine("保存成功");
Console.ReadKey();
}
}
}
创建带属性的XML:
namespace 创建带属性的XML
{
class Program
{
static void Main(string[] args)
{
XmlDocument doc = new XmlDocument();
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
doc.AppendChild(dec); XmlElement order = doc.CreateElement("Order");
doc.AppendChild(order);
XmlElement CustomerName = doc.CreateElement("CustomerName");
//CustomerName.InnerXml = "<p>我是一个标签</p>";
CustomerName.InnerXml = "<p>我是一个p标签</p>";
order.AppendChild(CustomerName);
XmlElement CustomerNumber = doc.CreateElement("CustomerNumber");
CustomerNumber.InnerText = "<p>我是一个标签</P>";
order.AppendChild(CustomerNumber);
XmlElement items = doc.CreateElement("Items");
order.AppendChild(items); XmlElement orderItem1 = doc.CreateElement("OrderItem");
//给节点添加属性
orderItem1.SetAttribute("Name", "西游记");
orderItem1.SetAttribute("Count", "");
items.AppendChild(orderItem1);
XmlElement orderItem2 = doc.CreateElement("OrderItem");
//给节点添加属性
orderItem2.SetAttribute("Name", "西游记");
orderItem2.SetAttribute("Count", "");
items.AppendChild(orderItem2);
XmlElement orderItem3 = doc.CreateElement("OrderItem");
//给节点添加属性
orderItem3.SetAttribute("Name", "西游记");
orderItem3.SetAttribute("Count", "");
items.AppendChild(orderItem3);
doc.Save("Order.xml");
Console.WriteLine("保存成功");
Console.ReadKey();
}
}
}
读取XML:
namespace 读取XML
{
class Program
{
static void Main(string[] args)
{
XmlDocument doc = new XmlDocument();
//加载需要读取的xml
doc.Load("Books.xml");
//获得根节点
XmlElement books = doc.DocumentElement;
//获得子节点
XmlNodeList xnl = books.ChildNodes;
foreach (XmlNode item in xnl)
{
Console.WriteLine(item.InnerText);
}
Console.ReadKey();
}
}
}
读取带属性的XML
namespace 读取带属性的XML
{
class Program
{
static void Main(string[] args)
{
XmlDocument doc = new XmlDocument();
doc.Load("Order.xml");
XmlNodeList xnl = doc.SelectNodes("/Order/Items/OrderItem");
foreach (XmlNode node in xnl)
{
Console.WriteLine(node.Attributes["Name"].Value);
Console.WriteLine(node.Attributes["Count"].Value);
}
Console.ReadKey();
}
}
}
删除节点:
namespace 删除节点
{
class Program
{
static void Main(string[] args)
{
XmlDocument doc = new XmlDocument();
doc.Load("Order.xml");
XmlNode xn = doc.SelectSingleNode("/Order/Items");
xn.RemoveAll();
doc.Save("Order.xml");
Console.WriteLine("删除成功 ");
}
}
}
追加XML:
namespace 追加XML
{
class Program
{
static void Main(string[] args)
{
//追加XML文档
XmlDocument doc = new XmlDocument();
XmlElement books;
if (File.Exists("Books.xml"))
{
//如果文件存在 加载XML
doc.Load("Books.xml");
//获得文件的根节点
books = doc.DocumentElement; }
else
{
//如果文件不存在
//创建第一行
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
doc.AppendChild(dec);
//创建根节点
books = doc.CreateElement("Books");
doc.AppendChild(books); }
//5.给根节点Books创建子节点
XmlElement book1 = doc.CreateElement("Book");
//将book添加到根节点
books.AppendChild(book1);
//6.给book1添加子节点
XmlElement name1 = doc.CreateElement("Name");
name1.InnerText = "西游记";
book1.AppendChild(name1);
XmlElement price1 = doc.CreateElement("Price");
price1.InnerText = "";
book1.AppendChild(price1);
XmlElement des1 = doc.CreateElement("Des");
des1.InnerText = "好看";
book1.AppendChild(des1); doc.Save("Books.xml");
}
}
}
C#第十三天的更多相关文章
- CRL快速开发框架系列教程十三(嵌套查询)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- 我的MYSQL学习心得(十三) 权限管理
我的MYSQL学习心得(十三) 权限管理 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) ...
- WPF入门教程系列二十三——DataGrid示例(三)
DataGrid的选择模式 默认情况下,DataGrid 的选择模式为“全行选择”,并且可以同时选择多行(如下图所示),我们可以通过SelectionMode 和SelectionUnit 属性来修改 ...
- Java期末设计(十三周)
一.项目完成计划 十三周和十四周完成用户交互界面的设计(1.登陆界面2.订票以及查询界面3.用户管理界面4.退票界面): 十三周完成登陆界面,十四周完成订票以及查询界面,用户管理界面和 ...
- Bootstrap <基础二十三>页面标题(Page Header)
页面标题(Page Header)是个不错的功能,它会在网页标题四周添加适当的间距.当一个网页中有多个标题且每个标题之间需要添加一定的间距时,页面标题这个功能就显得特别有用.如需使用页面标题(Page ...
- Bootstrap<基础十三> 按钮组
按钮组允许多个按钮被堆叠在同一行上.当你想要把按钮对齐在一起时,这就显得非常有用.你可以通过Bootstrap 按钮(Button) 插件 添加可选的 JavaScript 单选框和复选框样式行为. ...
- AngularJs的UI组件ui-Bootstrap分享(十三)——Progressbar
进度条控件有两种指令,第一种是uib-progressbar指令,表示单一颜色和进度的一个进度条.第二种是uib-bar和uib-progress指令,表示多种颜色和多个进度组合而成的一个进度条. 这 ...
- 第十一&十二&十三周周记
周数 专业学习目标 专业学习时间 新增代码量 博客发表量 人文方面的学习 知识技能总结 第十一周 认真学习网络技术,了解路由器和交换机之间的联通和使用. 一天一小时 300 一篇 每天用一小时看关于经 ...
- JAVA EE的十三种技术
java ee 的十三中技术 一.jdbc 1). jdbc-odbc桥 2). jdbc-native 驱动桥 3). jdbc-network 桥 4). 纯java驱动 二. java命令和目录 ...
- Java设计模式(十三) 别人再问你设计模式,叫他看这篇文章
原创文章,转载请务注明出处 OOP三大基本特性 封装 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的属性和方法只让可信的类操作,对不可信的进行信息隐藏. 继承 继承是指这样一种能力,它可以使 ...
随机推荐
- 利用ie的behavior属性兼容css3的一些属性
behavior是从Internet Explorer 5开始引入的,是一种通过使用 CSS 向 HTML 元素添加行为的方法. 但是只有 Internet Explorer 支持 behavior ...
- grunt 上手
grunt 上手 开始上手 Grunt 和 grunt 插件都是通过 npm 安装, Node.js 包管理器管理的. Grunt 0.4.x 版本需要Node.js 版本号不低于0.8.0. 一.安 ...
- 使用DBUnit实现对数据库的测试
这是一个JavaProject,有关DBUnit用法详见本文测试用例 首先是用到的实体类User.java package com.jadyer.model; public class User { ...
- 基于Spark的用户行为路径分析
研究背景 互联网行业越来越重视自家客户的一些行为偏好了,无论是电商行业还是金融行业,基于用户行为可以做出很多东西,电商行业可以归纳出用户偏好为用户推荐商品,金融行业可以把用户行为作为反欺诈的一个点,本 ...
- .NET基础——运算符
这一篇我们来讲解C#中的运算符 1. C#中的算术运算符 5个算数运算符:+ - * / % 它们都是二元运算符,* / % 的运算优先级相同,并且高于 + - ,+ - 的运 ...
- 将前台input中的数据异步传到后台并存入数据库
将前台input中的数据异步传到后台并存入数据库 先看图: 利用ajax异步交互数据,并不是以json数组的形式将数据传到后台,而是利用字符数组的形式将其传到后台.动态新增每一行数据,将每一列对应的数 ...
- 用友金蝶SQL数据库误格式化恢复 SQL数据库修复 SQL数据库恢复 工具 方法
用友金蝶SQL数据库误格式化恢复 SQL数据库修复 SQL数据库恢复 硬盘误格式化.重分区.重装操作系统覆盖 SQL数据解决方法 [客户名称]:贵州铜仁市开天驾驶人培训中心 [软件名称]:用友T3普及 ...
- 软件各种版本的含义!例如RC,M,GA等等
RC版本 RC:(Release Candidate) Candidate是候选人的意思,用在软件上就是候选版本.Release是发行.发布的意思.Release.Candidate.就是发行 ...
- Dockerfile文件格式的简单介绍
# This dockerfile uses the ubuntu image # VERSION 2 - EDITION 1 # Author: docker_user # Command form ...
- GOPS2017全球运维大会深圳站 出席嘉宾盘点!
去年,GOPS全球运维大会在深圳出发,当时门票提前几周收盘,2017年,承载着运维人的期望,GOPS全球运维大会再次来到了深圳.第六届GOPS2017全球运维大会深圳站(本次)将于2017年4月21日 ...