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; } }}