C#增删查改XML文档(以ListView形式)

Windows课上的一个小实验,虽然不是很难,但是做了好久……因此分享出来,希望对大家有所帮助。

这里展示对bookstore.xml的增删查改,包括对节点、元素、属性的修改。

目录

样式展示

具体实现

结果展示:

样式展示

无隐式插件

具体实现

具体方法这里不进行详细讲解,如果有朋友需要的话可以留言,我会来补的、

具体代码:

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.IO;
using System.Collections;

namespace xml_text
{
    
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            listView1.GridLines = true;
            listView1.FullRowSelect = true;

        }


        private void Form1_Load(object sender, EventArgs e)
        {

            //ListView
            //XML
            //加载xml文件
            listView1.View = View.Details;
            listView1.Columns.Clear();
            listView1.Items.Clear();
            listView1.Columns.Add("title", 50, HorizontalAlignment.Center);
            listView1.Columns.Add("author", 50, HorizontalAlignment.Center);
            listView1.Columns.Add("price", 50, HorizontalAlignment.Center);
            listView1.Columns.Add("ISBN", 100, HorizontalAlignment.Center);
            listView1.Columns.Add("stype", 50, HorizontalAlignment.Center);
            ShowXML();

        }

        public void addlv(string name,string author,string price)
        {
            ListViewItem item = new ListViewItem();
            item.SubItems[0].Text = (listView1.Items.Count + 1).ToString();
            item.SubItems.Add(name);
            item.SubItems.Add(author);
            item.SubItems.Add(price);
        }
        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
        public class XMLr
        {
            string title;
            public string Title
            {
                get { return title; }
                set { title = value; }
            }
            string genre;
            public string Genre
            {
                get { return genre; }
                set { genre = value; }
            }
            string price;
            public string Price
            {
                get { return price; }
                set { price = value; }
            }
            string author;
            public string Author
            {
                get
                {
                    return author;
                }
                set
                {
                    author = value;
                }
            }
            string ISBN;
            public string IS
            {
                get { return ISBN; }
                set { ISBN = value; }
            }
            public void ReadXML()
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load("bookstore.xml");
                XmlNode docNode = xmlDoc.DocumentElement;
                XmlNode objNode = docNode.FirstChild;
                foreach (XmlNode allNode in objNode.ChildNodes)
                {
                    if (allNode.Name == "ISBN")
                    {
                        ISBN = allNode.InnerText;
                    }
                    if (allNode.Name == "genre")
                    {
                        genre = allNode.InnerText;
                    }
                    if (allNode.Name == "title")
                    {
                        title = allNode.InnerText;
                    }
                    if (allNode.Name == "author")
                    {
                        author = allNode.InnerText;
                    }
                    if (allNode.Name == "price")
                    {
                        price = allNode.InnerText;
                    }
                }
            }
        }
        //添加书目
        private void button1_Click(object sender, EventArgs e)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(@"D:\windows_projects\xml2.0\xml_text\bin\Debug\bookstore.xml");
            XmlNode x = xmlDoc.SelectSingleNode("bookstore");
            XmlElement xel = xmlDoc.CreateElement("book");
            
            xel.SetAttribute("genre", textBox5.Text);
            xel.SetAttribute("ISBN", textBox4.Text);
            XmlElement xesub1 = xmlDoc.CreateElement("title");
            xesub1.InnerText = textBox1.Text;
            if(textBox1.Text=="")
            {
                MessageBox.Show("添加失败,书名不能为空!");
                return;
            }
            xel.AppendChild(xesub1);
            XmlElement xesub2 = xmlDoc.CreateElement("author");
            xesub2.InnerText = textBox2.Text;
            xel.AppendChild(xesub2);
            XmlElement xesub3 = xmlDoc.CreateElement("price");
            xesub3.InnerText = textBox3.Text;
            xel.AppendChild(xesub3);
            x.AppendChild(xel);
            xmlDoc.Save("bookstore.xml");
            MessageBox.Show("添加成功");
            textBox1.Clear();
            textBox2.Clear();
            textBox3.Clear();
            textBox4.Clear();
            textBox5.Clear();
            ShowXML();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }
        private void ShowXML() //显示xml数据
        {
            listView1.View = View.Details;
            listView1.Items.Clear();
            string path = "bookstore.xml"; //xml的文件位置
            XmlDocument xmlDoc = new XmlDocument();
            XmlReaderSettings settings = new XmlReaderSettings();
            settings.IgnoreComments = true; //忽略xml文档中的注释
            XmlReader reader = XmlReader.Create(path, settings);
            xmlDoc.Load(reader); //读取xml数据
            XmlNode xn = xmlDoc.SelectSingleNode("bookstore");
            XmlNodeList xnl = xn.ChildNodes;
            List<XMLr> stsList = new List<XMLr>();
            //循环遍历获取xml文档中的全部数据
            foreach (XmlNode Xnl in xnl)
            {
                XMLr filesAuto = new XMLr();
                filesAuto.Genre = Xnl.Attributes["genre"].Value;
                filesAuto.IS = Xnl.Attributes["ISBN"].Value;
                XmlElement xe1 = (XmlElement)Xnl;
                XmlNodeList xnl0 = xe1.ChildNodes;
                filesAuto.Title = xnl0.Item(0).InnerText;
               
                filesAuto.Author = xnl0.Item(1).InnerText;
                filesAuto.Price = xnl0.Item(2).InnerText;
                ListViewItem list = listView1.Items.Add(filesAuto.Title);
                list.SubItems.Add(filesAuto.Author);
                list.SubItems.Add(filesAuto.Price);
                list.SubItems.Add(filesAuto.IS);
                list.SubItems.Add(filesAuto.Genre);

            }
            reader.Close(); //关闭读取流
        }
        private void button2_Click(object sender, EventArgs e)
        {
            ShowXML();
        }
        

        //搜索节点
        private void button3_Click(object sender, EventArgs e)
        {
            listView1.Items.Clear();
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(@"D:\windows_projects\xml2.0\xml_text\bin\Debug\bookstore.xml");

            XmlNodeList xnl = xmlDoc.SelectNodes("//book");
            foreach (XmlNode xn in xnl)
            {
                if (xn.SelectSingleNode("title").InnerText.Equals(textBox6.Text))
                {
                    ListViewItem list = listView1.Items.Add(xn.SelectSingleNode("title").InnerText);
                    list.SubItems.Add(xn.SelectSingleNode("author").InnerText);
                    list.SubItems.Add(xn.SelectSingleNode("price").InnerText);
                    list.SubItems.Add(xn.Attributes["ISBN"].Value);

                    list.SubItems.Add(xn.Attributes["genre"].Value);
                }

            }

        }
        //删除节点
        private void button4_Click(object sender, EventArgs e)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(@"D:\windows_projects\xml2.0\xml_text\bin\Debug\bookstore.xml");
            var root = xmlDoc.DocumentElement;
            if (this.listView1.SelectedItems.Count>0)
            {

                //在xml删除选中项 只删除一
                
                XmlNodeList xnl = xmlDoc.SelectNodes("//book");

                foreach (XmlNode xn in xnl)
                {
                    string title = listView1.SelectedItems[0].SubItems[0].Text.ToString();

                    if (xn.SelectSingleNode("title").InnerText.Equals(title))   
                    {
                        root.RemoveChild(xn);
                        xmlDoc.Save("bookstore.xml");
                        int index = listView1.SelectedItems[0].Index;
                        listView1.Items[index].Remove();
                        ShowXML();
                        MessageBox.Show("删除成功!");
                        return;
                    }
                }
            }
            else
            {
                MessageBox.Show("请选中一项!");
            }
           
        }

        private void button5_Click(object sender, EventArgs e)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(@"D:\windows_projects\xml2.0\xml_text\bin\Debug\bookstore.xml");
            var root = xmlDoc.DocumentElement;
            if (this.listView1.SelectedItems.Count > 0)
            {
                XmlNodeList xnl = xmlDoc.SelectNodes("//book");

                foreach (XmlNode xn in xnl)
                {
                    string title = listView1.SelectedItems[0].SubItems[0].Text.ToString();

                    if (xn.SelectSingleNode("title").InnerText.Equals(title))
                    {
                        textBox1.Text = xn.SelectSingleNode("title").InnerText;
                        textBox2.Text= xn.SelectSingleNode("author").InnerText;
                        textBox3.Text = xn.SelectSingleNode("price").InnerText;
                        textBox4.Text = xn.Attributes["ISBN"].Value;
                        textBox5.Text = xn.Attributes["genre"].Value;
                        return;
                    }

                }

            }
            else
            {
                MessageBox.Show("请选中一项!");
            }
        }

        private void label3_Click(object sender, EventArgs e)
        {

        }

        private void button6_Click(object sender, EventArgs e)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(@"D:\windows_projects\xml2.0\xml_text\bin\Debug\bookstore.xml");
            var root = xmlDoc.DocumentElement;
            if (this.listView1.SelectedItems.Count > 0)
            {
                XmlNodeList xnl = xmlDoc.SelectNodes("//book");

                foreach (XmlNode xn in xnl)
                {
                    string title = listView1.SelectedItems[0].SubItems[0].Text.ToString();

                    if (xn.SelectSingleNode("title").InnerText.Equals(title))
                    {

                        xn.SelectSingleNode("title").InnerText = textBox1.Text;
                        xn.SelectSingleNode("author").InnerText = textBox2.Text;
                        xn.SelectSingleNode("price").InnerText = textBox3.Text;
                        xn.Attributes["ISBN"].Value = textBox4.Text;
                        xn.Attributes["genre"].Value = textBox5.Text;
                        xmlDoc.Save("bookstore.xml");
                        textBox1.Clear();
                        textBox2.Clear();
                        textBox3.Clear();
                        textBox4.Clear();
                        textBox5.Clear();
                        ShowXML();
                        MessageBox.Show("修改成功");
                        return;
                    }

                }

            }
        }
    }
}

结果展示:

所操作的XML文档

 操作视频:

xml

 


 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值