解析xml文件,并往文件里面写数据 C#源码

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.Xml;

namespace 学生管理系统
{
public partial class Form1 : Form
{
XmlDocument myDoc;
XmlNodeList mylist;
int current = 0;
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
//程序刚开始运行时显示数据
this.loadxmlNodeList();
this.showStudentInfo(current);
}
//加载xml文件
private void loadxmlNodeList()
{
myDoc = new XmlDocument();
myDoc.Load("students.xml");
mylist = myDoc.GetElementsByTagName("student");
}
//显示学生信息
private void showStudentInfo(int _current)//void 类型的函数返回的值不能是bool类型的
{
//判断下标值出界了就直接返回
if (current < 0 || current > mylist.Count - 1) return;

this.snoBox.Text = mylist[current].Attributes[0].Value;

this.nameBox.Text = mylist[current].ChildNodes[0].InnerText;

this.yearBox.Text = mylist[current].ChildNodes[1].ChildNodes[0].InnerText;

this.monthBox.Text = mylist[current].ChildNodes[1].ChildNodes[1].InnerText;

this.dayBox.Text = mylist[current].ChildNodes[1].ChildNodes[2].InnerText;
if (current == 0)
this.lastOneBtn.Enabled = false;
if (current == mylist.Count - 1)
this.nextOneBtn.Enabled = false;

}
/** 浏览上一个学生信息 */
private void lastOneBtn_Click(object sender, EventArgs e)
{
current--;
this.nextOneBtn.Enabled = true;
this.showStudentInfo(current);
}
/** 浏览上一个学生信息 */
private void nextOneBtn_Click(object sender, EventArgs e)
{
current++;
this.lastOneBtn.Enabled = true;
this.showStudentInfo(current);
}
/** 添加信息按钮 **/
private void addInfoBtn_Click(object sender, EventArgs e)
{
//点击添加信息后把保存按钮和取消按钮显示出来
this.addSaveBtn.Visible = true;
this.addCancleBtn.Visible = true;
//点击按钮之后把窗体上所有的文本框显示内容变为空
this.snoBox.Text =null;//null和“”中间无空格的表示是不一样的,在内存中的存储方式是不一样的
this.nameBox.Text = null;
this.yearBox.Text = null;
this.monthBox.Text = null;
this.dayBox.Text = null;

}
/** 取消按钮 **/
private void addCancleBtn_Click(object sender, EventArgs e)
{
this.addSaveBtn.Visible = false;
this.addCancleBtn.Visible = false;
this.showStudentInfo(current);
}
/** 保存按钮 **/
private void addSaveBtn_Click(object sender, EventArgs e)
{
//创建一个节点,节点名称是student
XmlElement studentnode = myDoc.CreateElement("student");
//创建一个属性,属性名为id
XmlAttribute idnode = myDoc.CreateAttribute("id");
//id属性赋值
idnode.Value = this.snoBox.Text;
//给节点添加属性
studentnode.Attributes.Append(idnode);
XmlElement namenode = myDoc.CreateElement("name");
//给创建的节点赋值
namenode.InnerText = this.nameBox.Text;
studentnode.AppendChild(namenode);
XmlElement birthnode = myDoc.CreateElement("birth");
XmlElement birthyearnode = myDoc.CreateElement("year");
birthyearnode.InnerText = this.yearBox.Text;
birthnode.AppendChild(birthyearnode);
XmlElement birthmontynode = myDoc.CreateElement("month");
birthmontynode.InnerText = this.monthBox.Text;
birthnode.AppendChild(birthmontynode);
XmlElement birthdaynode = myDoc.CreateElement("day");
birthdaynode.InnerText = this.dayBox.Text;
birthnode.AppendChild(birthdaynode);
studentnode.AppendChild(birthnode);
myDoc.ChildNodes[1].AppendChild(studentnode);
myDoc.Save("students.xml");

//防止一直按保存按钮存数多个数据
this.addSaveBtn.Visible = false;
this.addCancleBtn.Visible = false;
}

////封装保存按钮
//private void saveInfo(string _nodeName,string _nodeText)
//{

// XmlElement childNode = myDoc.CreateElement(_nodeName);
// childNode.InnerText = _nodeText;
// studentnode.Attributes.Append(idnode);
//}
}
}

时间: 2024-10-06 03:24:40

解析xml文件,并往文件里面写数据 C#源码的相关文章

礼物说仿写项目iOS源码

礼物说仿写(updating...) 源码下载:http://code.662p.com/view/14507.html api: 礼物说 首页精选 banner2: http://api.liwushuo.com/v2/secondary_banners?gender=1&generation=2 banner1: http://api.liwushuo.com/v2/banners?channel=iOS 精选: http://api.liwushuo.com/v2/channels/101

C写的扫描器源码

Title:C写的扫描器源码 --2010-10-27 20:02 无意间看见的一个源代码,弄回来读下. ----------------------------------------------------------------------------------------------------------------------------------- #include <stdio.h>#include <winsock.h> #define NETWORK_ERR

Spring 4 MVC 视图解析器(XML JSON PDF等) 纯注解(带源码)【推荐】

原文地址:http://websystique.com/springmvc/spring-4-mvc-contentnegotiatingviewresolver-example/ [本系列其他教程正在陆续翻译中,点击分类:spring 4 mvc 进行查看.源码下载地址在文章末尾.] [翻译 by 明明如月 QQ 605283073] 下一篇:Spring 4 MVC @RestController 注解实现REST Service 上一篇:Spring 4 MVC 表单校验资源处理(带源码)

php文件上传原理详解(含源码)

1.文件上传原理 将客户端的文件上传到服务器,再将服务器的临时文件上传到指定目录 2.客户端配置 提交表单 表单的发送方式为post 添加enctype="multipart/form-data" 3.服务器端配置 file_uploads = On,支持HTTP上传 uoload_tmp_dir = ,临时文件保存目录 upload_max_filesize = 2M,允许上传文件的最大值 max_file_uploads = 20 ,允许一次上传到的最大文件数 post_max_s

大文件拆分问题的java实践(附源码)

引子 大文件拆分问题涉及到io处理.并发编程.生产者/消费者模式的理解,是一个很好的综合应用场景,为此,花点时间做一些实践,对相关的知识做一次梳理和集成,总结一些共性的处理方案和思路,以供后续工作中借鉴. 本文将尝试由浅入深的方式表述大文件拆分的问题及不同解决方案,给出的方案不一定是最优解,也并非线上环境论证过的靠谱方式,目的只是在于通过该问题融会贯通io.多线程等基础知识理论.生产环境请慎用. 本文不会逐行讲解代码实现,而注重在方案设计及思路探讨上,但会在文末附上源码demo git地址. 问

SpringBoot 源码解析 (五)----- Spring Boot的核心能力 - 自动配置源码解析

在上一篇博客中分析了springBoot启动流程,大体的轮廓只是冰山一角.今天就来看一下springBoot的亮点功能:自动化装配功能. 先从@SpringBootApplication开始.在启动流程章节中,我们讲述了SpringBoot2大致的启动步骤,并进行了源码详解.但是在刷新容器这块并未展开,refreshContext(context);简单的一行代码,背后却做了太多事情.所以为了不喧宾夺主,本篇也尽量选取和注解@SpringBootApplication有关的方法讲解. sprin

随手用python写一个下载源码爬虫试试

最近在研读jdk源码,网上找了下资源,发现都不完整. 后来新发现了一个有完整源码的地方,主要包括了java,c,c++的东西,装逼需要,就想拿来玩玩.但是,找了好多种下载打开的方式,发现都不对.于是,我随手写了python爬虫,把他搞定. 1. 思路分析 1.1. 目标地址:http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/dddb1b026323/,打开后先自己看下,是否符合自己的需求: 1.2. 分析此结构下主要有两种形式,一是目录文件,二是最终

使用异或运算对数据及文件进行加密处理,附软件及源码

前几天写了一篇文章是在C语言中使用异或运算交换两个任意类型变量,其基础为使用^交换两个整数的算法: a ^= b; b ^= a; a ^= b; 如果你看明白这个算法,就会发现这样的规律:一个数异或另一个数两次后,该数保持不变.即: c = a^b; c = c^b; c == a; 这一规律就是使用异或运算对数据及文件进行加密处理的基本原理. 那就先贴下加密算法的代码: bool XorEncrypt(void* bufPtr, unsigned int bufSize, const cha

MyBatis编写映射文件实现增删改操作 附说明即源码

1.看一下我们接口 package cn.bdqn.mybatis.dao; import org.apache.ibatis.annotations.Select; import cn.bdqn.mybatis.been.Emp; /** * 这个接口不用写实现类,是用来给empMapper.xml进行动态绑定的 * @author Administrator * */ public interface EmpMapper { public Emp getEmpById(Integer id)