Linq 操作XML (增、删、改、查)

 原创

代码文件: 

using System;

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

namespace AddTest
{
    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)
        {
            XElement document = XElement.Load("DashboardSchema.xml");
            var defaultIcon = document.Attribute("defaultIcon") != null ? document.Attribute("defaultIcon").Value : "";

            var query = from g in document.Elements("group")
                        where g.Attribute("title").Value == "Management"
                        select new
                        {
                            Items = (from i in g.Elements("item")
                                     select new
                                     {
                                         Title = i.Element("title") != null ? i.Element("title").Value : "",
                                         Icon = i.Element("item-icon") != null ? i.Element("item-icon").Value : defaultIcon,
                                         Id = i.Element("id") != null ? i.Element("id").Value : ""
                                     }
                                )
                        };

            dataGridView1.DataSource = query.ElementAt(0).Items.ToList();
        }

        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            List<ShopItem> LItem = new List<ShopItem>();
            LItem.Add(new ShopItem() { Title = "1", Icon = "2", ID = "3" });
            LItem.Add(new ShopItem() { Title = "6", Icon = "5", ID = "4" });

            XElement document = XElement.Load("DashboardSchema.xml");
            document.Element("group").Add(
                from r in LItem
                select new XElement("item",
                            new XElement("title", r.Title),
                            new XElement("item-icon", r.Icon),
                            new XElement("id", r.ID)
                                    )
                );

            document.Save("DashboardSchema.xml");
        }
        /// <summary>
        /// 修改 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            XElement document = XElement.Load("DashboardSchema.xml");
            var queryXML = from rr in document.Elements("group").Elements("item")
                           where rr.Element("id").Value == "4"
                           select rr;
            foreach (XElement el in queryXML)
            {
                el.Element("title").Value = "LiuBin";//开始修改
            } 

            document.Save("DashboardSchema.xml");
        }

        private void button4_Click(object sender, EventArgs e)
        {
            dataGridView1.DataSource = null;
            XElement document = XElement.Load("DashboardSchema.xml");
            var defaultIcon = document.Attribute("defaultIcon") != null ? document.Attribute("defaultIcon").Value : "";

            var query = from g in document.Elements("group")
                        where g.Attribute("title").Value == "Management"
                        select new
                        {
                            Items = (from i in g.Elements("item")
                                     select new
                                     {
                                         Title = i.Element("title") != null ? i.Element("title").Value : "",
                                         Icon = i.Element("item-icon") != null ? i.Element("item-icon").Value : defaultIcon,
                                         Id = i.Element("id") != null ? i.Element("id").Value : ""
                                     }
                                )
                        };

            dataGridView1.DataSource = query.ElementAt(0).Items.ToList();
        }
        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button3_Click(object sender, EventArgs e)
        {

            List<XElement> lxel = new List<XElement>();

            XElement document = XElement.Load("DashboardSchema.xml");
            var queryXML = from rr in document.Elements("group").Elements("item") 
                           select rr;
            foreach (XElement el in queryXML)
            {
                if (el.Element("id").Value == "4")
                {
                    lxel.Add(el);
                } 
            }
            foreach (XElement item in lxel)
            {
                item.Remove();
            }
            document.Save("DashboardSchema.xml");
        }
    }

    struct ShopItem
    {
        private string title;
        private string icon;
        private string id;


        public string Title
        {
            get { return title; }
            set { title = value; }
        }
        public string Icon
        {
            get { return icon; }
            set { icon = value; }

        }
        public string ID
        {
            get { return id; }
            set { id = value; }
        }

    }
}

 

 XML文件格式

<?xml version="1.0" encoding="utf-8" ?>

<groups defaultIcon="resources/images/icon.png">

<group title="Management">

<item>

<title>Customers</title>

<item-icon>resources/images/icon.png</item-icon>

<id>customers</id>

</item>


<item>

<title>Orders</title>

<id>orders</id>

</item>


<item>

<title>Reports</title>

<id>reports</id>

</item>


</group>

 

</groups> 


posted @ 2010-07-12 16:40  Rollo Geng  阅读(137)  评论(0)    收藏  举报