c# winform 实际操作XML代码,包括创建、保存、查询、删除窗体演示

1.添加一窗体,加入3个按钮控件、1个文本控件、1个datagridview控件、2个隐藏label控件。

2.代码

执行效果

 

(1)按钮1创建xml文件,按文本框中整数添加到执行文件同目录下的data.xml文件;(2)按钮2在datagridview表中输出xml文件内容;(3)按钮3可以对表中选项进行删除行。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml;
using System.Threading;
using System.Text.RegularExpressions;

namespace WindowsFormsApplication9
{
    public partial class Form1 : Form
    {
        //定义公共对象:
        public int row;
        XmlDocument xmldoc;
        XmlElement xmlelement;
        DataTable check_dt = new DataTable();
        public Form1()
        {
            InitializeComponent();
            dataGridView1.RowHeadersVisible = false;
            dataGridView1.DataSource = null;
           
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (!IsInteger(textBox1.Text))
            {
                MessageBox.Show("请输入整数", "提示");
                this.textBox1.Focus();
        
                return;
            }
            row = Convert.ToInt32(textBox1.Text);
       
            xmldoc = new XmlDocument();
            //加入XML的声明段落,<?xml version="1.0" encoding="gb2312"?>
            XmlDeclaration xmldeclaration;
            xmldeclaration = xmldoc.CreateXmlDeclaration("1.0", "gb2312", null);
            xmldoc.AppendChild(xmldeclaration);

            //加入一个根元素
            xmlelement = xmldoc.CreateElement("", "Books", "");
            xmldoc.AppendChild(xmlelement);
            //加入另外一个元素
            for (int i = 1; i < row+1; i++)
            {
                Thread.Sleep(1);
                string x = System.DateTime.Now.Millisecond.ToString();

                 Random ran=new Random();
                int RandKey=ran.Next(10000000,99999999);
                int price = ran.Next(100, 200);

                XmlNode root = xmldoc.SelectSingleNode("Books");//查找<Books>
                XmlElement dot = xmldoc.CreateElement("Node");//创建一个<Node>节点
                //dot.SetAttribute("ISBN", RandKey.ToString());//设置该节点ISBN属性
                dot.SetAttribute("ISBN", RandKey.ToString());//设置该节点ISBN属性
                dot.SetAttribute("NAME", "数学-" + i.ToString());//设置该节点genre属性

                XmlElement sub1 = xmldoc.CreateElement("title");
                sub1.InnerText = "题王之中学数学-" + i.ToString();//设置文本节点
                dot.AppendChild(sub1);//添加到<Node>节点中

                XmlElement sub2 = xmldoc.CreateElement("price");
                sub2.InnerText = price.ToString();
                dot.AppendChild(sub2);

                root.AppendChild(dot);//添加到<Employees>节点中
  
            }

            //保存创建好的XML文档
            xmldoc.Save(Environment.CurrentDirectory + "\\" + "data.xml");
            label1.Text = "ok";

        }

   

        private void button2_Click(object sender, EventArgs e)
        {
            DataTable dt = new DataTable();
            dt.Columns.AddRange(new DataColumn[]{  
             new DataColumn("NAME",typeof(string)),  
             new DataColumn("PRICE",typeof(string))});
            String path = Environment.CurrentDirectory + "\\" + "data.xml";
            XmlDocument doc = new XmlDocument();
            doc.Load(path);
            XmlNodeList nodes = doc.SelectNodes("/Books/Node");

            foreach (XmlNode node in nodes)
            {
                DataRow r = dt.NewRow();
                r[0] = string.Format("{0}", node.ChildNodes[0].InnerText);
                r[1] = string.Format("{0}", node.ChildNodes[1].InnerText);
                dt.Rows.Add(r);
            }
           dataGridView1.RowHeadersVisible = false;
            dataGridView1.DataSource = dt;
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

            int a = 0;
            for (int i = 0; i < this.dataGridView1.Rows.Count; i++)
            {
                if (dataGridView1.Rows[i].Cells[0].EditedFormattedValue.ToString() == "True")
                {
                      { a++; }
                }
            }
            label2.Text = "选中"+ a.ToString() + "个";
           
         
        }

        private void button3_Click(object sender, EventArgs e)
        {

            String path = Environment.CurrentDirectory + "\\" + "data.xml";
            XmlDocument doc = new XmlDocument();
            doc.Load(path);
            XmlNodeList nodes = doc.SelectNodes("/Books/Node");

            foreach (XmlNode node in nodes)
            {


                for (int i = 0; i < this.dataGridView1.Rows.Count; i++)
                {
                    if (dataGridView1.Rows[i].Cells[0].EditedFormattedValue.ToString() == "True" && dataGridView1.Rows[i].Cells[2].EditedFormattedValue.ToString() == string.Format("{0}", node.ChildNodes[1].InnerText))
                    {

                        node.ParentNode.RemoveChild(node);
                    }
                }

            }
            doc.Save(Environment.CurrentDirectory + "\\" + "data.xml");
        }
        public static bool IsInteger(string s)
        {
            string pattern = @"^\d*$";
            return Regex.IsMatch(s, pattern);
        }

    }
}
 

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C是一种计算机程序设计语言,广泛用于开发各种应用和系统。它是一种中级语言,具有高效性和灵活性,因此在许多领域都得到了广泛的应用。 C语言由美国贝尔实验室的丹尼斯·里奇和肯·汤普逊于1972年开发。与其他高级语言相比,C语言更接近机器语言,能更直接地与计算机硬件进行交互。这使得C语言在编写底层系统软件和驱动程序方面非常有用,如操作系统、编译器等。 C语言具有简洁明确、易于理解和学习的特点。它的语法规则相对简单,不涉及复杂的面向对象概念,因此初学者更容易上手。许多编程课程和教材都以C语言为基础,作为学习编程的启蒙语言。 C语言提供了丰富的库函数和标准函数,使得开发者可以方便地使用各种功能,如输入输出、字符串处理、内存管理等。此外,C语言还支持指针操作,这是其独有的特性之一。指针可以直接访问和修改内存中的数据,提供了更高的灵活性和效率。 C语言的应用领域非常广泛。它可以用于开发各种类型的软件,包括桌面应用程序、嵌入式系统、游戏等。C语言还被广泛应用于科学计算、数据分析和算法研究等领域。许多著名的软件和操作系统,如Unix、Linux和MySQL,都是使用C语言来编写的。 总之,C语言作为一种高效、灵活且广泛应用的编程语言,不仅在计算机科学领域具有重要地位,而且对于学习和理解其他高级编程语言也有很大的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT技术与企业应用结合的爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值