XML能夠在各個平台的不同應用程序之間進行數據的傳輸與存儲.它是獨立於軟件和硬件的信息傳輸工具.因此,它也成了W3C 的推薦標准.現在軟硬件的配置文件一般都采用XML文件來存儲.XML文件簡單易用,在任何應用程序中都可以訪問.在應用程序中訪問進而操作XML文件一般有兩種模型,分別是使用DOM(文檔對象模型)和流模型,使用DOM的好處在於它允許編輯和更新XML文檔,可以隨機訪問文檔中的數據,可以使用XPath查詢,但是,DOM的缺點在於它需要一次性的加載整個文檔到內存中,對於大型的文檔,這會造成資源問題.先不說這麼多了,來看一個簡單的用DOM創建讀取寫入XML文件的例子.
XmlProcess.cs:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Xml;
namespace XmlRead
{
public class XmlProcess
{
//創建一個XML對象
XmlDocument xmlDoc;
//定義一個結點對象
XmlNode node;
//獲取當前工作目錄路徑
string workDir = Directory.GetCurrentDirectory();
List<Student> stuList = new List<Student>();
//定義一個元素
XmlElement xmlEle;
public void CreatNewXml()
{
//在工作目錄下創建一個XML文件
//實例化XML對象
xmlDoc = new XmlDocument();
//加入XML文件的聲明段落,,<?xml version="1.0" encoding="gb2312"?>
XmlDeclaration xmlDecl;
xmlDecl = xmlDoc.CreateXmlDeclaration("1.0", "gb2312", null);
xmlDoc.AppendChild(xmlDecl);
//加入一個根元素
xmlEle = xmlDoc.CreateElement("", "成績表", "");
xmlDoc.AppendChild(xmlEle);
//獲取根結點
XmlNode root = xmlDoc.SelectSingleNode("成績表");
//添加一個學生記錄
XmlElement stu1 = xmlDoc.CreateElement("學生1");
XmlElement stuNo = xmlDoc.CreateElement("學號");
stuNo.InnerText = "1001";
XmlElement stuName = xmlDoc.CreateElement("姓名");
stuName.InnerText = "張三";
XmlElement stuGrade = xmlDoc.CreateElement("成績");
stuGrade.InnerText = "96";
stu1.AppendChild(stuNo);
stu1.AppendChild(stuName);
stu1.AppendChild(stuGrade);
root.AppendChild(stu1);
//添加第二個學生記錄
XmlElement stu2 = xmlDoc.CreateElement("學生2");
stuNo = xmlDoc.CreateElement("學號");
stuNo.InnerText = "1002";
stuName = xmlDoc.CreateElement("姓名");
stuName.InnerText = "李四";
stuGrade = xmlDoc.CreateElement("成績");
stuGrade.InnerText = "90";
stu2.AppendChild(stuNo);
stu2.AppendChild(stuName);
stu2.AppendChild(stuGrade);
root.AppendChild(stu2);
//以上為手動添加XML文件的方法,用於創建並書寫XML文件
//還可以使用XmlTextWriter對象輸出數據流
//生成並保存XML文件
xmlDoc.Save(workDir + "\StudentGrade.xml");
}
public void DataIn(string fileName)
{
xmlDoc = new XmlDocument();
//載入XML文件
xmlDoc.Load(workDir + "\" + fileName);
//獲取根結點
XmlNodeList nodes = xmlDoc.SelectNodes("/成績表");
for (int i = 0; i < nodes.Count; i++)
{
//獲取學生信息的結點總數
XmlNodeList nls = nodes[i].ChildNodes;
//循環填充學生實例的各個字段
for (int j = 0; j < nls.Count; j++)
{
//創建學生類實例
&nbs