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>

浙公网安备 33010602011771号