.NET-22-Xml文件的增删查改以及验证登录
对xml文件的增删查改,以及使用xml文件存储数据进行登录的验证
界面如下
代码如下
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 加载信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_Load(object sender, EventArgs e)
{
LoadXml();
////验证登录
//string name = txtNewName.Text.Trim();
//string psd = txtNewAge.Text.Trim();
//XmlDocument xmlDom = new XmlDocument();
//xmlDom.Load(@"xmldom.xml");
////查询name
//XmlNode node = xmlDom.SelectSingleNode("/school/class/student[.='" + name + "']");
//if (node != null)
//{
// //如果存在则查找他后面的兄弟节点
// if (node.NextSibling.InnerText == psd)
// {
// //登录成功
// }
//}
//else
//{
// MessageBox.Show("用户名不存在");
//}
}
/// <summary>
/// 加载Xml文件
/// </summary>
private void LoadXml()
{
//清空界面
listView1.Items.Clear();
//加载Xml文件信息
XmlDocument xmlDom = new XmlDocument();
//加载Xml文件信息
xmlDom.Load(@"C:\Users\Administrator\Desktop\test\练习用文件\xmldom.xml");
//查询出所有的学生信息
XmlNodeList nodeList = xmlDom.SelectNodes("/school/class/student");
//遍历加载到listView中
foreach (XmlNode item in nodeList)
{
//新增一个ListViewItem
ListViewItem lvItem = new ListViewItem();
lvItem.SubItems.Add(item.SelectSingleNode("name").InnerText);
lvItem.SubItems.Add(item.SelectSingleNode("age").InnerText);
lvItem.SubItems.Add(item.SelectSingleNode("gender").InnerText);
lvItem.SubItems.Add(item.SelectSingleNode("address").InnerText);
listView1.Items.Add(lvItem);
}
}
/// <summary>
/// 新增信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnNew_Click(object sender, EventArgs e)
{
string name = this.txtNewName.Text.Trim();
string age = this.txtNewAge.Text.Trim();
string gender = this.txtNewGender.Text.Trim();
string address = this.txtNewAddress.Text.Trim();
//加载信息
XmlDocument xmlDom = new XmlDocument();
xmlDom.Load(@"C:\Users\Administrator\Desktop\test\练习用文件\xmldom.xml");
//获取根节点
XmlElement xmlRoot = xmlDom.DocumentElement;
//判断是否已经存在
if (xmlDom.SelectNodes("/school/class[@id='c01']/student/name[.='" + name + "']").Count > 0)
{
MessageBox.Show("名称重复");
}
else
{
//添加一个节点
XmlElement xmlNowStudent = xmlDom.CreateElement("student");
XmlElement xmlNowNane = xmlDom.CreateElement("name");
xmlNowNane.InnerText = name;
xmlNowStudent.AppendChild(xmlNowNane);
XmlElement xmlNowAge = xmlDom.CreateElement("age");
xmlNowAge.InnerText = age;
xmlNowStudent.AppendChild(xmlNowAge);
XmlElement xmlNowGender = xmlDom.CreateElement("gender");
xmlNowGender.InnerText = gender;
xmlNowStudent.AppendChild(xmlNowGender);
XmlElement xmlNowAddress = xmlDom.CreateElement("address");
xmlNowAddress.InnerText = address;
xmlNowStudent.AppendChild(xmlNowAddress);
//保存Xml文件
xmlDom.Save(@"C:\Users\Administrator\Desktop\test\练习用文件\xmldom.xml");
//重新加载
LoadXml();
}
//XDocument xDom = XDocument.Load(@"C:\Users\Administrator\Desktop\test\练习用文件\xdom.xml");
////创建一个XElemet
//XElement xe = new XElement();
////获取根节点添加进去
//xDom.Root.Add(xe);
////保存
//xDom.Save(@"C:\Users\Administrator\Desktop\test\练习用文件\xdom.xml");
}
/// <summary>
/// 修改信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnUpdate_Click(object sender, EventArgs e)
{
//创建对象
XmlDocument xmlDom = new XmlDocument();
//加载Xml文件
xmlDom.Load(@"C:\Users\Administrator\Desktop\test\练习用文件\xmldom.xml");
//获取选择的节点
XmlNode xmlSelect = xmlDom.SelectSingleNode("/school/class[@id='c01']/student[.='" + this.txtUpName.Text.Trim() + "']");
//根据选择的节点,修改信息
xmlSelect.SelectSingleNode("name").InnerText = this.txtUpName.Text.Trim();
xmlSelect.SelectSingleNode("age").InnerText = this.txtUpAge.Text.Trim();
xmlSelect.SelectSingleNode("gender").InnerText = this.txtUpGender.Text.Trim();
xmlSelect.SelectSingleNode("address").InnerText = this.txtUpAddress.Text.Trim();
//保存Xml文件
xmlDom.Save(@"C:\Users\Administrator\Desktop\test\练习用文件\xmldom.xml");
//重新加载
LoadXml();
}
/// <summary>
/// 删除信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnDelete_Click(object sender, EventArgs e)
{
if (listView1.SelectedItems.Count > 0)
{
//获取选中行的名称
string name = listView1.SelectedItems[0].SubItems[0].Text;
//加载信息
XmlDocument xmlDom = new XmlDocument();
xmlDom.Load(@"C:\Users\Administrator\Desktop\test\练习用文件\xmldom.xml");
//获取根节点
XmlElement xmlRoot = xmlDom.DocumentElement;
//找到选中的节点
XmlNode xmlSelect = xmlRoot.SelectSingleNode("/school/class/student[.='" + name + "']");
if (xmlSelect != null)
{
//通过付集结点删除当前选中的节点
xmlDom.SelectSingleNode("/school/class[@id='c01']").RemoveChild(xmlSelect);
//保存Xml文件
xmlDom.Save(@"C:\Users\Administrator\Desktop\test\练习用文件\xmldom.xml");
//重新加载
LoadXml();
}
}
else
{
MessageBox.Show("请先选择一个需要删除的节点");
}
//XDocument xDom = XDocument.Load(@"C:\Users\Administrator\Desktop\test\练习用文件\xdom.xml");
////查找选择的节点
//XElement xe = xDom.Root.Elements("student").Single(p => p.Attribute("id").Value == "id");
////移除
//xe.Remove();
////保存
//xDom.Save(@"C:\Users\Administrator\Desktop\test\练习用文件\xdom.xml");
}
/// <summary>
/// 选中改变
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
//如果选中
if (listView1.SelectedItems.Count > 0)
{
ListViewItem lvItem = listView1.SelectedItems[0];
this.txtUpName.Text = lvItem.SubItems[0].Text;
this.txtUpAge.Text = lvItem.SubItems[1].Text;
this.txtUpGender.Text = lvItem.SubItems[2].Text;
this.txtUpAddress.Text = lvItem.SubItems[3].Text;
}
}
}