首页 > 其他 > 详细

基础加强第五天 XML练习

时间:2015-03-23 23:54:06      阅读:308      评论:0      收藏:0      [点我收藏+]

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, Gender = "男", 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("请选中要修改的行");
            }
        }

基础加强第五天 XML练习

原文:http://blog.csdn.net/qizhichao110/article/details/44572811

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!