您的位置:首页 > 编程语言 > C#

C# LINQ基本用法(3) ---LINQ To Xml

2010-03-19 15:59 609 查看
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.IO;
using System.Xml.Linq;
/*---------------------------------------------
* 标题:LINQ to XML 基本用法;
* 作者:靳志远(jack15850798154)
* 时间:2010-03-18
* 地点:江苏南京
* 说明 :通过 LINQ来实现对XML的基本操作(增加、删除、修改)。
*----------------------------------------------
*/
namespace Create_LINQTOXML
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
static string strPath = "Employee.xml";
static string strID = "";

/// <summary>
///通过LINQ 创建XML
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
XDocument doc=new XDocument(
new XDeclaration("1.0","utf-8","yes"),
new XElement(this.textBox1.Text,
new XElement(textBox6.Text.Trim(),new XAttribute(this.textBox2.Text.Trim()
,this.textBox7.Text.Trim()),
new XElement(this.textBox3.Text.Trim(),this.textBox8.Text.Trim()),
new XElement(this.textBox4.Text.Trim(),this.textBox9.Text.Trim()),
new XElement(this.textBox5.Text.Trim(),this.textBox10.Text.Trim()))
)
);
doc.Save(strPath); //保存文件。
groupBox1.Enabled=false;
getXmlInfo();
}

private void Form1_Load(object sender, EventArgs e)
{
//判断是否存在这个文件;
if (File.Exists(strPath))
{
groupBox1.Enabled = false;
getXmlInfo();
}
else
{
groupBox1.Enabled = true;
}
}

//把获取的Xml文件放入到DataSet中去。。
private void getXmlInfo()
{
DataSet myds = new DataSet();
myds.ReadXml(strPath);
dataGridView1.DataSource = myds.Tables[0];
}
/// <summary>
/// 向XML文件添加数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
XElement xe = XElement.Load(strPath);
IEnumerable<XElement> elements1 = from element in xe.Elements("People")
select element;
//生成新的编号
string str = (Convert.ToInt32(elements1.Max(element => element.Attribute("ID").Value)) + 1).ToString("000");
XElement people = new XElement(
"People", new XAttribute("ID", str),
new XElement("Name", textBox11.Text),
new XElement("Sex", comboBox1.Text),
new XElement("Salary", this.textBox12.Text)
);
xe.Add(people);
xe.Save(strPath);
getXmlInfo();
}
/// <summary>
/// 修改信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button4_Click(object sender, EventArgs e)
{

if (strID != "")
{
XElement xe = XElement.Load(strPath);
IEnumerable<XElement> elements = from element in xe.Elements("People")
where element.Attribute("ID").Value == strID
select element;
if (elements.Count() > 0)
{
XElement newXE = elements.First();
newXE.SetAttributeValue("ID", strID);
newXE.ReplaceNodes(
new XElement("Name",textBox11.Text),
new XElement("Sex",comboBox1.Text),
new XElement("Salary",textBox12.Text)


);
}
xe.Save(strPath);
}
getXmlInfo();

}
//显示选中XMl节点的详细信息
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
strID = dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString();
XElement xe = XElement.Load(strPath);
IEnumerable<XElement> elements=from PInfo in xe.Elements("People")
where PInfo.Attribute("ID").Value==strID
select PInfo;
foreach (XElement element in elements)
{
textBox11.Text = element.Element("Name").Value;
comboBox1.SelectedItem = element.Element("Sex").Value;
textBox12.Text = element.Element("Salary").Value;
}
}
/// <summary>
/// 删除数据;
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e)
{
if (strID != "")
{
XElement xe = XElement.Load(strPath);
IEnumerable<XElement> elements = from element in xe.Elements("People")
where element.Attribute("ID").Value == strID
select element;
if (elements.Count() > 0)
{
elements.First().Remove();


}
xe.Save(strPath);
}
getXmlInfo();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: