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.Linq;
using System.Xml;
namespace lingtoxml
{
public partial class Ling_student_xml : Form
{
string xmlPath = "StuInfo.xml";
public Ling_student_xml()
{
InitializeComponent();
}
private void Ling_student_xml_Load(object sender, EventArgs e)
{
datagridBind();
}
public void datagridBind()
{
DataSet ds = new DataSet();
ds.ReadXml(xmlPath);
dataGridView1.DataSource = ds.Tables[0];
}
//添加信息到xml中去
private void AddEnter_Click(object sender, EventArgs e)
{
//1、加载xml
XElement xelment = XElement.Load(xmlPath);
//2、实例化泛型接口
IEnumerable<XElement> xelments = from xe in xelment.Elements("stu")
select xe;
//生成相应的数据
string SID = Convert.ToInt32(xelments.Max(xe => xe.Attribute("ID").Value)+1).ToString("0000");
XElement stu = new XElement("stu", new XAttribute("ID", SID),
new XElement("Name",textBox1.Text),
new XElement("Sex",textBox2.Text),
new XElement("Age",textBox3.Text),
new XElement("Grad",textBox4.Text)
);
xelment.Add(stu);//添加xml元素
xelment.Save(xmlPath);//保存xml
datagridBind();
}
// 根据选择的ID获得详细信息
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
string keys = dataGridView1.Rows[e.RowIndex].Cells[4].Value.ToString();//获取ID
XElement xelment=XElement.Load(xmlPath);//加载xml
//根据编号查找
IEnumerable<XElement> xelments = from xe in xelment.Elements("stu")
where xe.Attribute("ID").Value == keys
select xe;
foreach (XElement item in xelments)
{
textBox5.Text = item.Attribute("ID").Value.ToString();
textBox1.Text = item.Element("Name").Value.ToString();
textBox2.Text = item.Element("Sex").Value.ToString();
textBox3.Text = item.Element("Age").Value.ToString();
textBox4.Text = item.Element("Grad").Value.ToString();
}
}
private void button1_Click(object sender, EventArgs e)
{
XElement xelment = XElement.Load(xmlPath);
if (textBox5.Text != "")
{
IEnumerable<XElement> xelments = from xe in xelment.Elements("stu")
select xe;
if (xelments.Count() != 0)
{
XElement newXE = xelments.First();
newXE.SetAttributeValue("ID", textBox5.Text);
newXE.ReplaceNodes(
new XElement("Name",textBox1.Text),
new XElement("Sex",textBox2.Text),
new XElement("Age",textBox3.Text),
new XElement("Grad",textBox4.Text)
);
}
xelment.Save(xmlPath);
}
datagridBind();
}
}
}
![](https://pic002.cnblogs.com/images/2011/105852/2011072523044671.png)