使用DOM进行XML文件的读写操作
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
补充:软件开发 , C# ,