xml存储通讯录数据并用C#程序解析出来显示在窗体上

1.先创建一个xml文件存放数据

 

2.在VS中新建一个项目,创建一个Windows窗体应用程序(路径项目名称自己修改)

3。在窗体上拖出如下控件,并修改好各个控件的属性,方便在代码中确定是哪个控件,最好不要使用系统默认的控件名称(可以起一些有意义的名称方便在写代码时确认控件要显示的数据。。。。没看明白自己体会)

.

4.双击窗体编写代码,首先要解析xml文件必须在头文件中添加 using System.Xml; 头文件

 

然后要想加载出来就显示数据就必须在这个 private void Form1_Load(object sender, EventArgs e) 方法中添加解析xml文档的代码,先创建一个xml文件对象,然后把之前创建好的xml文件加载到这xml文件对象里,然后获取一个XmlNodeList类型的数组,用来存放xml下的节点,再把数组里的数据一个个拿出来现在在文本框中。这里是把显示数据封装在一个函数里面,因为显示数据用到的地方比较多,这样提高代码的利用率,修改这也比较方便。(注意要将XmlNodeList类型的数组和XmlDocument类型的对象定义为全局变量,方便在其他函数里使用)

加载视图时调用的方法!!!!

 

5.最后主要的是考虑两个按钮浏览通讯录的问题,要注意,显示数据是通过a的值改变来显示不同联系人的数据,这是可以考虑改变a 的值来显示上一个联系人或者下一个联系人,只要在click事件里添加代码就可以了,浏览时要注意一个数组越界的问题,a变得大于数组是的长度减一时是没有数据的,这时系统会报错,所以应该加一个判断语句,还要注意的是把判断语句放在a的值改变的前边,(为什么这样写自己思考,提示:考虑最后将要大于数组的长度时会出现什么问题) ,还有一个要注意的是当浏览到数组最后时,判断语句拿到的是数组的长度而a是从零开始的所以判断语句要减一。

 

 

 

源码如下:(高手勿喷!!!)

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
{
int a = 0;
XmlDocument myDoc;
XmlNodeList mylist;

public Form1()
{
InitializeComponent();
}

private void label1_Click(object sender, EventArgs e)
{

}

private void Form1_Load(object sender, EventArgs e)
{
//创建一个xml文件对象
myDoc = new XmlDocument();
//加载xml文件到myDoc对象里
myDoc.Load("addressBook.xml");
//获取xml文件里所有父节点下的子节点
mylist = myDoc.GetElementsByTagName("linkman");

//显示数据
this.showInfo(a);

 


}

private void lastOne_Click(object sender, EventArgs e)
{

//当下表小于或等于0 点击事件执行返回
if (a <= 0) return;
a--;
this.showInfo(a);
}

private void nextOne_Click(object sender, EventArgs e)
{
//当下标大于或等于数组总个数减一的值 点击事件执行返回
if (a >= mylist.Count - 1) return;
a++;
this.showInfo(a);

}

//显示数据的方法 a是调用这个函数传过来的参数,控制xml下的第几个子节点
private void showInfo(int _a)
{
this.linkmanBox.Text = mylist[a].Attributes[0].Value;

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

this.sexBox.Text = mylist[a].ChildNodes[1].InnerText;

this.phoneNumberBox.Text = mylist[a].ChildNodes[2].InnerText;
}
}
}

posted @ 2016-04-11 01:35  笑对人生1229  阅读(1605)  评论(0编辑  收藏  举报