XML和文件操作

第八章 可扩展性标记语言Xml

一、Xml简介

1.什么是Xml?

Xml是一种标记语言,很类似于Html,准确地说Xml是一种可扩展性标记语言。

注意:Xml是不作为的,仅仅是纯文本,任何可以打开txt的工具都可以编辑Xml文件。

2.Xml的作用:被设计用来传输和存储数据。

3.Xml的特点:

①Xml指可扩展性标记语言(Extensible Markup Language);

②Xml是一种标记语言,很类似于Html;

③Xml的设计宗旨是传输和存储数据,而非显示数据;

④Xml标签没有被预定义,需要自行定义标签。

4.Xml语法

​ 结构:是一个树形结构,树形结构必须存在根标签。

​ 语法规则:

​ ①所有Xml元素都须有关闭标签;

<Student>这是正确的</Student>
<Student>这是错误的<Student>

​ ②Xml区分大小写;

<Student>这是正确的</Student>
<Student>这是错误的</STUDENT>

​ ③Xml必须正确地嵌套;

<b><i>这是正确的</i></b>
<b><i>这是错误的</b></i>

​ ④Xml文档必须有根元素;

<root>
    <child>
        <subChild>这是正确的</subChild>
    </child>
</root>

<child></child>
<subChild>这是错误的</subChild>

​ ⑤Xml的属性值须加引号。

<Day year="2020" month="02" day="25">  <!--这是正确的-->
<Day year=2020 month=02 day=25>  <!--这是错误的-->

​ 命名规则:

​ ①由字母、数字、符号组成;

​ ②不能以数字或者标点符号开始;

​ ③名称不能以字符 “xml”(或者 XML、Xml)开始;

​ ④名称不能包含空格。

5.Xml和Html的区别

​ 1.相同点:都是标记语言

​ 2.不同点:

​ ①xml被设计用来传输和储存数据,Html展示美化数据;

​ ②Xml区分大小写,Html不区分大小写;

​ ④Xml的标签是自行定义的,Html的标签是固定的;

​ ⑤Xml的标签必须成双成对,Html允许有单标签,如、。

6.特殊的意义字符

在Xml中,如果将"<"放在xml元素中,会发生错误,这是因为解析器会把他当作新元素的开始。

解决方案:用实体引用来代替特殊的字符。

注意:分号是英文状态下的。

&It; < 小于
&gt; > 大于
&amp; & 和号
&apos; 单引号
&quot; " 双引号

7.注释:

Xml中的注释和Html一样

二、读取Xml文件

1.读取Xml文件的步骤:

前提:导入命名空间System.Xml

①声明XmlDocument对象

XmlDocument myXml=new XmlDocument();

②加载xml文件

myXml.Load(“xml文件路径”);

③读取xml根节点

XmlNode/XmlElement xmlRoot=myXml.DocumentElement;

④遍历子节点

XmlNode/XmlElement

2.XmlNode和XmlElement的区别

相同的属性:

InnertText:获取节点上的文本

Name:获取Xml标签的名称

ChildNodes:得到所有子节点

XmlElement [] :子节点的子节点

Attributes[“key的名字”].Value:拿到属性值

不同点:

①XmlElement独有的属性:GetAttribute(key的名字)拿到属性值;

②XmlNode是抽象类,XmlElement是class

关系:XmlElement是XmlNode的子类

<?xml version="1.0" encoding="UTF-8"?>
<Note>
<Day year="2012" month="3" day="4">
<To>22</To>
<From>sssdd</From>
<Heading>ddd</Heading>
<Message>cccc</Message>
</Day>
</Note>
using System.Xml;
//解析Note.xml
//创建XmlDocument对象
XmlDocument myXml=new XmlDocument();
//加载Xml文件
myXml.Load("Note.xml");   
//读取Xml根节点
XmlNode xmlRoot=myXml.DocumentElement;
//遍历子节点
foreach(XmlNode node in xmlRoot.ChildNodes)
{
    	//得到子节点的子节点的文本
        Console.WriteLine(node["From"].InnerText);
    	//得到属性值
    	Console.WriteLine(node.Attributes["year"].Value);
}

注意:①加载Xml时候里面的路径可以是绝对路径,也可以将Xml文件放在bin目录下的Debug文件夹下,那么此时的路径直接写上Xml文件名。

②保存Xml文件的时候将文件的编码格式改成"UTF-8",避免出现乱码。

③关于更多的Xml的学习推荐:https://www.w3school.com.cn/xml/index.asp

三、TreeView

1.通过代码绑定节点:

①绑定根节点

1)创建一个TreeView对象

TreeNode rootNode=new TreeNode(“字符串”);

TreeView控件对象.Nodes.Add(rootNode); //这里返回的是一个int值,节点的深度

2)创建一个TreeView对象

TreeNode rootNode;

rootNode=TreeView控件对象.Nodes.Add(“字符串”); //这里返回的是一个节点对象

②绑定子节点

1)TreeNode childNode=new TreeNode (“字符串”);

this.treeview1.rootNode.Nodes.Add(childNode);

2)TreeNode rootNode;

rootNode=this.treeview1.rootNode.Nodes.Add(“字符串”);

③给选中的节点绑定子节点

this.treeview1.SelectedNode.Nodes.Add(childNode);

2.TreeView的属性和事件

属性 说明
Nodes TreeView控件中的所有树节点
Level 节点的深度,从0开始
index 节点的当前下标,从0开始
Text 节点的文本
SelectedNode 当前选中的节点
Tag 节点的隐藏域
事件 说明
AfterSelect 节点被选中事件,AfterSelect独有的方法:e.Node—>e---->当前发生的操作

3.删除节点:

TreeView控件对象.SelectedNode.Remove(); //删除选中的节点

TreeView控件对象.SelectedNode.Nodes.Clear(); //清空选中的子节点

TreeView控件对象.Nodes.Clear(); //清空所有子节点

第九章 文件操作

一、读取文件

1.读取文件的步骤

前提:导入命名空间System.IO;

①创建文件流

​ FileStream fs =new FileStream (文件路径,FileMode文件打开方式)

​ FileMode值:

​ Create:如果文件不存在,创建一个新文件,如果文件已经存在,则覆盖原有文件;

​ CreateNew:如果文件不存在,创建一个新文件,如果文件存在则异常;

​ Open:打开文件,如果不存在则异常;

​ OpenOrCreate:文件存在则直接打开,文件不存在先创建再打开;

​ Append:如果文件已经存在则追加到文件末尾,文件不存在则创建文件;

​ Truncate:打开一个已经存在的文件,清空本来的内容,然后再往里面写内容,如果不存在则异常。

②创建阅读器或写入器

​ 1.阅读器:

​ 1)创建对象

​ StreamReader sr=new StreamReader(文件流);

		   StreamReader sr=new StreamReader(文件流,Encoding指定编码格式);

​ 2)方法

​ String ReadLine();读取一行

​ String ReadToEnd();从当前位置读取到末尾

​ Close();关闭

​ 2.写入器:

​ 1)创建对象

​ StreamWriter sw =new StreamWriter(文件流);

​ StreamWriter sw =new StreamWriter(文件流,Encoding指定编码格式);

​ 2)方法:

​ Write(“字符串”);写入不换行

​ WriteLine(“字符串”);写入换行

​ Close();关闭

③执行读写操作

④关闭阅读器或写入器

⑤关闭文件流

//执行写入操作
using System.IO;
FileStream fs =new FileStream ("文件路径",FileMode.Append)   //追加
StreamWriter sw =new StreamWriter(fs,Encoding.Default)
sw.WriteLine("你好");
sw.Close();
fs.Close();
//执行读取操作
using System.IO;
FileStream fs =new FileStream ("文件路径",FileMode.Open)  //打开已经存在的文件
StreamReader sr=new StreamReader(fs,Encoding.Default);
sr.ReadToEnd();
sr.Close();
fs.Close();

2.操作文件和目录

​ 1.文件

​ File:static类

返回值类型 方法名称 说明
bool Exists(文件路径) 用于检查指定文件是否存在
void Copy(文件源路径,目标路径) 将指定路径的源文件中的内容复制到目标文件,如果文件不存在,在指定路径新建一个文件
void Move(文件源路径,目标路径) 将指定文件移到一个新的路径
void Delete(文件路径) 删除指定的文件,如果指定文件不存在不会引发异常

​ FileInfo:非static类

​ 1.创建对象

​ FileInfo info =new FileInfo(文件路径); //注意FileInfo没有无参构造函数

​ 2.方法:

返回值类型 方法名称 说明
void CopyTo(目标路径) 将现有文件复制到新文件,不允许覆盖现有文件
void MoveTo(目标路径) 将指定文件移到一个新位置
void Delete(文件路径) 永久删除文件

​ 3.属性:

返回值类型 属性名称 说明
long Length 文件的大小
string Name 文件的名称
string Extension 文件的后缀名称
string FullName 获取完整目录
bool Exists 判断文件是否存在

​ 2.目录

​ Directory:static类

​ 方法:

返回值类型 方法名称 说明
bool Exists(路径) 判断指定文件夹是否存在
void Move(源路径,目标路径) 将指定文件或目录及其内容移到一个新的路径
void Delete(路径,bool) 删除指定目录,如果bool值为true则删除子目录中的所有目录内容
String [] GetDirectories() 获取所有子目录
String [] GetFiles() 获取所有子文件

​ DirectoryInfo:非static类

​ 1.创建

​ DirectoryInfo info =new DirectoryInfo(path);

​ 2.方法:

返回值类型 方法名称 说明
void MoveTo(路径) 将指定文件或目录及其内容移到一个新的路径
void Delete(路径,bool) 删除指定目录,如果bool值为true则删除子目录中的所有目录内容
DirectoryInfo [] GetDirectories() 获取所有子目录
FileInfo [] GetFiles() 获取所有子文件

​ 3.属性

返回值类型 属性名称 说明
bool Exists 判断文件夹是否存在
string Name 文件夹名称
string Parent 得到父目录

3.静态类和非静态类的区别:

​ ①静态类只能有static成员;非静态类可以包括静态成员,也可以包括非静态成员

​ ②静态类不能new对象,没有构造函数;非静态类可以new对象,有构造函数

​ ③静态类不能被继承;非静态类可以被继承。

4.静态方法:

​ ①在C#中只能用类名调用

​ ②同一个类中直接调用,static不能直接调用非static成员

​ ③static方法中不能用this关键字

5.static关键字:不能修饰局部成员

6.控件介绍

①openFileDialog:选择打开文件,打开一个已经存在的文件;

②saveFileDialog:选择保存文件,输出文件;

③folderBrowserDialog:选择的是一个文件夹[目录]。

发布了14 篇原创文章 · 获赞 4 · 访问量 771

猜你喜欢

转载自blog.csdn.net/WW0724/article/details/104504511
今日推荐