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#第十三天的更多相关文章

  1. CRL快速开发框架系列教程十三(嵌套查询)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  2. 我的MYSQL学习心得(十三) 权限管理

    我的MYSQL学习心得(十三) 权限管理 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) ...

  3. WPF入门教程系列二十三——DataGrid示例(三)

    DataGrid的选择模式 默认情况下,DataGrid 的选择模式为“全行选择”,并且可以同时选择多行(如下图所示),我们可以通过SelectionMode 和SelectionUnit 属性来修改 ...

  4. Java期末设计(十三周)

    一.项目完成计划     十三周和十四周完成用户交互界面的设计(1.登陆界面2.订票以及查询界面3.用户管理界面4.退票界面):     十三周完成登陆界面,十四周完成订票以及查询界面,用户管理界面和 ...

  5. Bootstrap <基础二十三>页面标题(Page Header)

    页面标题(Page Header)是个不错的功能,它会在网页标题四周添加适当的间距.当一个网页中有多个标题且每个标题之间需要添加一定的间距时,页面标题这个功能就显得特别有用.如需使用页面标题(Page ...

  6. Bootstrap<基础十三> 按钮组

    按钮组允许多个按钮被堆叠在同一行上.当你想要把按钮对齐在一起时,这就显得非常有用.你可以通过Bootstrap 按钮(Button) 插件 添加可选的 JavaScript 单选框和复选框样式行为. ...

  7. AngularJs的UI组件ui-Bootstrap分享(十三)——Progressbar

    进度条控件有两种指令,第一种是uib-progressbar指令,表示单一颜色和进度的一个进度条.第二种是uib-bar和uib-progress指令,表示多种颜色和多个进度组合而成的一个进度条. 这 ...

  8. 第十一&十二&十三周周记

    周数 专业学习目标 专业学习时间 新增代码量 博客发表量 人文方面的学习 知识技能总结 第十一周 认真学习网络技术,了解路由器和交换机之间的联通和使用. 一天一小时 300 一篇 每天用一小时看关于经 ...

  9. JAVA EE的十三种技术

    java ee 的十三中技术 一.jdbc 1). jdbc-odbc桥 2). jdbc-native 驱动桥 3). jdbc-network 桥 4). 纯java驱动 二. java命令和目录 ...

  10. Java设计模式(十三) 别人再问你设计模式,叫他看这篇文章

    原创文章,转载请务注明出处 OOP三大基本特性 封装 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的属性和方法只让可信的类操作,对不可信的进行信息隐藏. 继承 继承是指这样一种能力,它可以使 ...

随机推荐

  1. mybatis3.4测试CRUD

    导入包 H:\jar\jdbc\mysql-connector-java-5.1.13-bin.jarH:\jar\mybatis\mybatis-3.4.1\mybatis-3.4.1.jarH:\ ...

  2. LINQ to XML LINQ学习第一篇

    LINQ to XML LINQ学习第一篇 1.LINQ to XML类 以下的代码演示了如何使用LINQ to XML来快速创建一个xml: public static void CreateDoc ...

  3. 读取同一文件夹下多个txt文件中的特定内容并做统计

    读取同一文件夹下多个txt文件中的特定内容并做统计 有网友在问,C#读取同一文件夹下多个txt文件中的特定内容,并把各个文本的数据做统计. 昨晚Insus.NET抽上些少时间,来实现此问题,加强自身的 ...

  4. C语言栈与调用惯例

    C语言栈与调用惯例 1.前言 最近在再看<程序员的自我修养>这本书,对程序的链接.装载与库有了更深入的认识.关于这本书的评价可以去豆瓣看看http://book.douban.com/su ...

  5. hdu 1498

    每次只能消除一行或一列的相同颜色的气球, 求有多少种气球在k次内不能消除 求出每种气球最少需要多少次消除,就跟hdu 2119消除1用多少次是一样的问题 就是求有这种气球的行和列的最大匹配 #incl ...

  6. 微软必应借PK谷歌突围中国搜索市场

    Bing“必应”是微软2009年推出的搜索品牌(http://www.bing.com),它取代的是同门师兄Live Search.进入2013年,在国内及好莱坞的多部大片里面,我都看到了Bing搜索 ...

  7. Objective-C之run loop详解

    Objective-C之run loop详解 做了一年多的IOS开发,对IOS和Objective-C深层次的了解还十分有限,大多还停留在会用API的级别,这是件挺可悲的事情.想学好一门语言还是需要深 ...

  8. js区分汉字和字符,校验长度

    遇到这么一个问题,    长度限制输入150个英文字符(小于等于150个英文字符长度),超出则直接禁止输入,并提醒:摘要输入必须小于等于75个中文字符长度! 长度校验倒是没问题,但是要区分汉字还是英文 ...

  9. 【Zookeeper】源码分析之Watcher机制(一)

    一.前言 前面已经分析了Zookeeper持久话相关的类,下面接着分析Zookeeper中的Watcher机制所涉及到的类. 二.总体框图 对于Watcher机制而言,主要涉及的类主要如下. 说明: ...

  10. ***网Web前端开发规范(初稿)

    这几天一直在梳理关于前端方面的开发规范,现在暂时梳理了HTML的开发规范,暂且放置于此! 规范目的: 使开发流程更加规范化 文件命名规范:(需审批) 1.项目命名 全部采用小写方式, 以下划线分隔. ...