添加、读取、修改xml例子
<?xml version="1.0" encoding="gb2312"?>
<zhuanye>
<major>
<major_id>1</major_id>
<major_title>专业100</major_title>
</major>
<major>
<major_id>2</major_id>
<major_title>专业2</major_title>
</major>
</zhuanye>
添加:
protected void AddBClass_Click(object sender, EventArgs e)
{
string url = Server.MapPath("../XML/major.xml");
string major_title = this.title.Text.ToString();
try
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(url); //加载XML文档
XmlNode root = xmlDoc.SelectSingleNode("zhuanye");
//查找第一个匹配的XmlNode
XmlElement major = xmlDoc.CreateElement("major");
string id;
//创建第一个节点的第一个元素
if (root.HasChildNodes)
{
id = Convert.ToString(Convert.ToInt32(root.LastChild.FirstChild.InnerText) + 1);
}
else
{
id = "1";
}
//设置ID
XmlElement id2 = xmlDoc.CreateElement("major_id");
//创建第一个节点的第一个元素里的属性
id2.InnerText = id;//设置文本节点
major.AppendChild(id2);
//设置专业名
XmlElement title = xmlDoc.CreateElement("major_title");
//创建第一个节点的第一个元素里的属性
title.InnerText = major_title;//设置文本节点
major.AppendChild(title);
root.AppendChild(major);
xmlDoc.Save(url);
}
catch(Exception ex)
{
Response.Write(ex.ToString());
}
}
读取xml展示
private void ReadXML()
{
string url = Server.MapPath("../XML/major.xml");//获得当前文件夹下的XML文件
StreamReader sRead = new StreamReader(url, System.Text.Encoding.GetEncoding("GB2312"));
//以一种特定的编码从字节流读取字符,必须要转化成GB2312读取才不能出乱码
XmlDataDocument datadoc = new XmlDataDocument();//操作XML文档
datadoc.DataSet.ReadXml(sRead);//将读取的字节流存到DataSet里面去
this.GridView1.DataSource = datadoc.DataSet.Tables[0].DefaultView;
//以news_id建立索引
this.GridView1.DataBind();
datadoc = null;//清空对XML数据的操作
sRead.Close();//关闭字节流的读取
}
修改:
protected void Updatemajor(object sender, GridViewUpdateEventArgs e)
{
string url = Server.MapPath("../XML/major.xml");
int id = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value);
string title = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.Trim();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(url); //加载XML文件
XmlNode root = xmlDoc.SelectSingleNode("zhuanye");//查找xinwen节点
XmlNodeList xnl = root.ChildNodes; //获取xinwen下面所以子节点
for (int i = 0; i < xnl.Count; i++)
{
XmlNodeList xnl11 = xnl.Item(i).SelectNodes("major_id");//查找news_id下面节点集合
XmlElement xe = (XmlElement)xnl11.Item(0); //news_id节点下面的元素
if (xe.InnerText.Equals(Convert.ToString(id))) //获取节点以及所有子集的串联值
{
xe.InnerText = Convert.ToString(id);
xe.ParentNode.ChildNodes.Item(1).InnerText = title;
}
}
xmlDoc.Save(url);
GridView1.EditIndex = -1;
ReadXML();
}