1、写入xml文档 class Program { static void Main(string[] args) { List<Person> list = new List<Person>(); list.Add(new Person() { Age=18,Gender="男",Name="张三",Id="001"}); list.Add(new Person() { Age = 18,Gender = "男",Name = "李四",Id = "002" }); list.Add(new Person() { Age = 18,Gender = "女",Name = "王五",Id = "003" }); list.Add(new Person() { Age = 18,Name = "赵六",Id = "004" });
XDocument xdoc = new XDocument(); //创建根元素 XElement root = new XElement("Person"); for (int i = 0; i < list.Count; i++) { XElement student = new XElement("student"); //给student 设置属性 student.SetAttributeValue("Id",list[i].Id); student.SetElementValue("name",list[i].Name); student.SetElementValue("gender",list[i].Gender); student.SetElementValue("age",list[i].Age.ToString()); root.Add(student);//节点添加到根节点中 } //把根元素添加都文件夹中 xdoc.Add(root); xdoc.Save("person2.xml"); Console.WriteLine("xml文档写入完成"); Console.ReadKey(); } }
2、读取XML文件练习 //加载文档 XDocument xdoc = XDocument.Load("bank.xml"); //遍历根节点下所有的子节点 foreach (XElement item in xdoc.Root.Elements()) { Console.WriteLine(item.Name); //遍历二级标签 foreach (XElement ele in item.Elements()) { //打印输出二级标签的名称和对应的值 Console.WriteLine(ele.Name+"====="+ele.Attribute("val").Value); } } Console.WriteLine("OK"); Console.ReadKey();
3、遍历XML文件 private void Form2_Load(object sender,EventArgs e) { //在窗体加载的时候 读取xml文件 XDocument xdoc = XDocument.Load("11.xml"); //获取根节点(Root获取文档的xml树的元素) XElement root = xdoc.Root; //将根元素的名字显示到控件的根节点上 TreeNode tn = treeView1.Nodes.Add(root.Name.ToString()); //现在,根节点已经添加进来了,下面的根节点还有好多子节点,我们需要通过一个循环将他们查询并显示出来 LoadXElement(root,tn); }
private void LoadXElement(XElement root,TreeNode tn) { //遍历根元素下所有的子节点 foreach (XElement item in root.Elements()) { //判断当前这个节点元素下是否还有元素 if (item.Elements().Count() > 0) { TreeNode tn1 = tn.Nodes.Add(item.Name.ToString()); LoadXElement(item,tn1); } else //如果没有,则直接显示当前 { tn.Nodes.Add(item.Value); } } }
4、XML增删改查 private void Form1_Load(object sender,EventArgs e) { //读取所有的客户信息 LoadUserInfo(); } /// <summary> /// 读取所有用户的信息 /// </summary> private void LoadUserInfo() { //创建一个集合,来存储对象的数据 List<User> list = new List<User>(); XDocument xdoc = XDocument.Load("haodongxi.xml"); //获取根元素,遍历该根元素下的所有子元素,并把所有的子元素添加到一个User 类型的集合中 foreach (XElement user in xdoc.Root.Elements()) { list.Add(new User() { Age = user.Element("age").Value,Gender = user.Element("gender").Value,Id = user.Attribute("id").Value,Name = user.Element("name").Value,Password = user.Element("password").Value }); } //绑定数据源 dgv.DataSource = list; //先判断第一行是否有数据 if (dgv.Rows.Count>0) { dgv.SelectedRows[0].Selected = false;//禁止第一行选中 } } /// <summary> /// 添加用户信息 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnAdd_Click(object sender,EventArgs e) { //获取姓名,性别,年龄,密码,id //所有的数据都添加到xml文件中 //读取xml文件,获取根节点,向根元素中添加子节点 XDocument xdoc = XDocument.Load("haodongxi.xml"); XElement root = xdoc.Root;//根元素 //创建子元素 XElement user = new XElement("user"); user.SetAttributeValue("id",txtId.Text.Trim());//id user.SetElementValue("name",txtName.Text.Trim());//姓名 user.SetElementValue("password",txtPwd.Text.Trim());//密码 string gender = rdoMan.Checked ? "男" : "女"; gender = rdoWoman.Checked ? "女" : "男"; user.SetElementValue("gender",gender); user.SetElementValue("age",txtAge.Text.Trim());
//把子元素添加懂啊根元素中 root.Add(user); xdoc.Save("haodongxi.xml"); MessageBox.Show("操作成功"); //刷新 LoadUserInfo(); }
/// <summary> /// 右键删除 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tsmiDelete_Click(object sender,EventArgs e) { //删除之前判断是否有选中行 if (dgv.SelectedRows.Count>0) //有选中的 { //获取选中行的id,获取的是选中的第一行中第一个单元格中值 string id = dgv.SelectedRows[0].Cells[0].Value.ToString(); //根据id去xml文件中查找user标签 XDocument xdoc = XDocument.Load("haodongxi.xml"); XElement root = xdoc.Root;
XElement ele = root.Elements("user").Where(x => x.Attribute("id").Value == id).Single(); ele.Remove();//删除选中的节点
xdoc.Save("haodongxi.xml"); MessageBox.Show("操作成功"); LoadUserInfo(); } else { MessageBox.Show("看准目标再下手"); } }
/// <summary> /// 单击单元格时发生 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dgv_CellClick(object sender,DataGridViewCellEventArgs e) { txtUId.Text = dgv.SelectedRows[0].Cells[0].Value.ToString(); txtUName.Text = dgv.SelectedRows[0].Cells[1].Value.ToString();//姓名 txtUPwd.Text = dgv.SelectedRows[0].Cells[2].Value.ToString();//密码 txtUAge.Text = dgv.SelectedRows[0].Cells[3].Value.ToString();//年龄 string gender = dgv.SelectedRows[0].Cells[4].Value.ToString(); rdoMan.Checked = gender == "男" ? true : false; rdoUWoman.Checked = gender == "女" ? true : false; }
/// <summary> /// 修改数据 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnUpdate_Click(object sender,EventArgs e) { //判断是否有选中的行 if (dgv.SelectedRows.Count>0) //选中 { //读取xml文件,获取根元素,在根元素中查找id是什么的user标签 XDocument xdoc = XDocument.Load("haodongxi.xml"); //获取根元素 XElement root = xdoc.Root; //查找所有的user元素 XElement ele = root.Elements("user").Where(xy => xy.Attribute("id").Value == txtUId.Text).Single(); ele.SetElementValue("name",txtUName.Text.Trim());//姓名 ele.SetElementValue("age",txtUAge.Text.Trim());//年龄 ele.SetElementValue("password",txtUPwd.Text.Trim());//密码 string gender = rdoUMan.Checked ? "男" : "女"; gender = rdoUWoman.Checked ? "女" : "男"; ele.SetElementValue("gender",gender);//性别
//修改完成后,保存xml文件 xdoc.Save("haodongxi.xml"); //给出提示 MessageBox.Show("修改成功"); //重新加载页面 LoadUserInfo(); } else //没有选中 { MessageBox.Show("请选中要修改的行"); } } (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|