深入.NET平台和C#编程 第五章 学习笔记

本文是深入.NET平台和C#编程第五章的学习笔记,主要探讨了.NET框架的核心概念,C#语言的高级特性,以及如何使用ListView控件和XML进行数据操作。通过实例解析,深入浅出地讲解了.NET平台的内部工作机制和C#编程的实用技巧。

 

深入.NET平台和C#编程
第五章 文件读写与XML
 
命名空间:using System.IO
 
读写文件:
1. 建立一个文件流,流是一个用于数据传输的对象,FileStream类
FileStream(string FilePathFileMode),FileMode指定如何打开文件的模式,是个枚举类型
FileStream myFs = new FileStream(path,FileMode.Create);
 
2. 创建阅读器或写入器
StreamWriter sw = new StreamWriter(数据流对象); //创建写入器
StreamReader sr = newStreamReader(数据流对象);//创建读取器
3. 执行读写操作
StreamWrite.Write() 用于写入流
StreamWrite.WriteLine() 写入一行数据,写入某些数据后跟换行符
 
StreamReader.ReadLine() 读取文件流中的一行数据,并返回字符串
StreamReader.ReadToEnd() 从当前位置读取到末尾,返回字符串
 
4. 关闭阅读器或写入器
StreamWrite.Close()
StreamReader.Close();
 
5. 关闭文件流
FileStream.Close()
 
 
【文件和目录操作】
命名空间:using System.IO
 
File类 & Directory类 (静态类)
 
【XML】
可扩展标记性语言,用于描述数据
特点:
1.XML中用于描述数据的各个节点可以i自由的扩展。
2.XML文件中的节点区分大小写。
3.XML中的没对标记通常称为节点,成对出现,用来描述节点存储的内容。
 
自己写一个XML文档 Student.xml
<students>
 <studentid="1">
    <name>InSag</name>
    <age>12</age>
 </student>
 <studentid="2">
    <name>wangwu</name>
    <age>24</age>
 </student>
 <studentid="3">
    <name>lisi</name>
    <age>27</age>
 </student>
 <studentid="4">
    <name>waiNews</name>
    <age>35</age>
 </student>
 <studentid="5">
    <name>Jack</name>
    <age>34</age>
 </student>
</students>
 
操作MXL文档的属性和方法:
命名空间:using System.xml
 
 
XmlDocument对象
DocumentElement 属性:获取根节点。
ChildNodes 属性:获取所有子节点。
Load() 方法:读取整个XML文档结构。
 
XmlNode对象
InnerText 属性:当前节点的值。
Name 属性:当前节点的名字。
ChildNodes 属性:当前节点的所有子节点。
 
实例:
 
首先我们自己写一个XML文档 Student.xml(结构如上),将Student.xml读取出来并添加到ListView控件中,并添加“插入”和“删除”数据功能。
 
Student.xml中有很多学员信息,我们要将每个学员的信息写入ListView中,用面向对象思考,每条记录就是一个对象,于是我写了一个Student类,用于存储从XML文件中读取出的的学员信息。(如图)
 
 
 
 
目标1:取出Student.xml中的信息添加到ListView
 
在主窗体中创建学生类集合,创建XML对象,以及读取XML文档的方法和填充ListView的方法
 
using System.Collections.Generic;
using System.Windows.Forms;
using System.Xml;
 
 
//创建学员集合对象
List<Student> stuList = new List<Student>();
//创建xml对象
XmlDocument xmlDoc = new XmlDocument();
 
 
///<summary>
///读取XML数据写入集合
///</summary>
public void readerXMLtoList()
{
 
    //加载xml文件
    xmlDoc.Load("Student.xml");
    //获取根节点
    XmlNode node = xmlDoc.DocumentElement;
    //循环取出根节点下的子节点
    foreach (XmlNode nodes in node.ChildNodes)
    {
        //创建一个学生对象
        Student stu = new Student();
        //获得节点的属性:<student id="2">
        stu.Id = Convert.ToInt32(nodes.Attributes["id"].Value);
        //循环子节点下的子节点
        foreach (XmlNode nodeChild in nodes.ChildNodes)
        {
            //判断当前节点的Name属性
            switch (nodeChild.Name)
            {
                    //如果节点Name属性=name,那么学生对象的name属性 = 节点的Name
                case "name": stu.Name = nodeChild.InnerText; break;
                case "age": stu.Age = Convert.ToInt32(nodeChild.InnerText); break;
 
            }
          
        }
        //将该学生对象添加到集合
        stuList.Add(stu);
    }
}
 
 
///<summary>
///将集合中的数据填充到ListView
///</summary>
public void FillView()
{
    foreach (Student stu in stuList)
    {
        ListViewItem lvi = new ListViewItem(stu.Id.ToString());
        lvi.Tag = stu.Id;
        lvi.SubItems.Add(stu.Name);
        lvi.SubItems.Add(stu.Age.ToString());
 
        lvStu.Items.Add(lvi);
    }
 
}
 
 
///<summary>
///窗体加载
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
private void Form3_Load(object sender, EventArgs e)
{
    readerXMLtoList();
    FillView();
}
 
 
目标2:添加删除功能,将选中项删除,并保存XML文档
 
///<summary>
///删除节点
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
private void msitDel_Click(object sender, EventArgs e)
{
    if (lvStu.SelectedItems.Count > 0)
    {
        //获取选中项的Tag值,作为被删除的节点属性值
        int index =Convert.ToInt32( lvStu.SelectedItems[0].Tag);
        //获取该属性值的节点
   XmlNode node = xmlDoc.SelectSingleNode
(string.Format("//students/student[@id = {0}]",index));
        //删除节点
        xmlDoc.DocumentElement.RemoveChild(node);
        //保存XML文件
        xmlDoc.Save("Student.xml");
    }
}
 
 
目标3:添加插入功能,保存
 
///<summary>
///插入数据
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
private void btnInsert_Click(object sender, EventArgs e)
{
    //获取根节点,用于添加student节点
    XmlNode xmlNode = xmlDoc.DocumentElement;
 
    //建立name节点
    XmlElement name = xmlDoc.CreateElement("name");
    name.InnerText = txtName.Text;//赋值
    //建立Age节点
    XmlElement age = xmlDoc.CreateElement("age");
    age.InnerText = txtAge.Text;//赋值
 
    //建立Student节点
    XmlElement student = xmlDoc.CreateElement("student");
    //创建一个属性值
    XmlAttribute xab = xmlDoc.CreateAttribute("id");
    xab.InnerText = txtID.Text;//赋值
    //为节点添加属性
    student.SetAttributeNode(xab);
 
    #region在指定位置插入节点
   //创建指定的节点
XmlNode InsertNode = xmlDoc.SelectSingleNode
(string.Format("//students/student[@id = {0}]",txtInsterNum.Text));
    //将新节点插入指定的节点之后
    xmlNode.InsertAfter(student,InsertNode);
    //插入指定节点之前xmlNode.InsertBefore
    //添加节点到文档结尾xmlNode.AppendChild(student);
    #endregion
   
    //添加student节点下的子节点
    student.AppendChild(name);
    student.AppendChild(age);
    //保存XML
    xmlDoc.Save("Student.xml");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值