Demo ứng dụng cơ bản sử dụng LINQ to XML | Lập Trình TV

ICTSharing

Hôm này ghé qua ddth.com thấy có bạn hỏi về sử dụng LINQ to XML, mình định trả lời luôn bên đó, xong cũng muốn chia sẻ luôn với mọi người để các bạn có thể làm quen với LINQ to XML, một công cụ tuyệt vời giúp chúng ta có thể xử lý các file XML một cách dễ dàng (dễ chưa từng có luôn..D).. Mình đã làm một ứng dụng Window Form nhỏ bằng C# viết với Visual Studio 2010 demo sử dụng LINQ 2 XML với các năng mô tả:
  • Cách lấy dữ liệu từ file XML show ra DatagridView
  • Cách cập nhật một node/phần tử trong tài liệu xml
  • Cách thêm một node/phần tử vào tài liệu xml
Ứng dụng này chỉ demo một phần khả năng của LINQ 2 XML, để có thể nói hết về những cái hay cũng như master đươc công nghệ này thì có lẽ chúng ta còn cần trao đổi nhiều hơn nữa trong các bài post sau :D … Và đây là ứng dụng các bạn tải về nhé!
Code Demo nè: :D
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
using System;
 using System.Data;
 using System.Xml;
 using System.Xml.Linq;
 using System.Windows.Forms;
namespace LINQ2XML
 {
 public partial class Form1 : Form
 {
 public Form1()
 {
 InitializeComponent();
 }
/*
 * Ví dụ demo xử dụng LINQ To XML
 * Phạm vi: mô phỏng đơn giản việc load dữ liệu từ file XML, Insert và Update một node
 * Giới hạn: Ví dụ không kiểm soát dữ liệu đầu vào
 *
 * Author: serivn.cor@gmail.com
 */
private XDocument LoadXmlDocument(string url)
 {
 //Hầm load một file xml vào đối tượng XDocument
 try
 {
 return XDocument.Load(url);
 }
 catch
 {
 return null;
 }
 }
private void LoadData()
 {
 //Hàm nạp dữ liệu từ file xml vào DataGridView
 //Load xml file to Xdocument
 XDocument doc = LoadXmlDocument("data.xml");
 DataTable dtb = new DataTable();
 dtb.Columns.Add("Mã Sản phẩm");
 dtb.Columns.Add("Tên sản phẩm");
 dtb.Columns.Add("Giá");
foreach (XElement p in doc.Descendants("product"))
 {
 DataRow row = dtb.NewRow();
 row[0] = p.Attribute("id").Value;
 row[1] = p.Element("ProductName").Value;
 row[2] = p.Element("ProductPrice").Value;
 dtb.Rows.Add(row); // Thêm dòng mới vào dtb
 }
dataGridView1.DataSource = dtb;
 }
private void Form1_Load(object sender, EventArgs e)
 {
 LoadData();
 }
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
 {
 //lấy thông tin dòng hiện tại hiển thị ra các textbox
 if (e.RowIndex >= 0 && e.RowIndex < dataGridView1.Rows.Count)
 {
 DataGridViewRow row = dataGridView1.Rows[e.RowIndex];
 txtID.Text = row.Cells[0].Value.ToString();
 txtProductName.Text = row.Cells[1].Value.ToString();
 txtPrice.Text = row.Cells[2].Value.ToString();
 }
 }
private void button2_Click(object sender, EventArgs e)
 {
 //Xóa hết thông tin để thêm item mới
 txtID.Enabled = true;
 txtID.Text = "";
 txtPrice.Text = "";
 txtProductName.Text = "";
 txtID.Focus();
 }
private void button3_Click(object sender, EventArgs e)
 {
 if (txtID.Text != null && txtPrice.Text != "" && txtProductName.Text != "")
 {
 //Load xml document
 XDocument doc = LoadXmlDocument("data.xml");
 if (doc.Descendants("product").Where(x => x.Attribute("id").Value.Equals(txtID.Text)).Count() == 1)
 {
 //Nếu đã tồn tại sản phẩm có ID này rồi thì thực hiện cập nhật
 XElement ele = doc.Descendants("product").Where(x => x.Attribute("id").Value.Equals(txtID.Text)).First();
 ele.Element("ProductName").Value = txtProductName.Text;
 ele.Element("ProductPrice").Value = txtPrice.Text;
 doc.Save("data.xml");
 }
 else
 {
 //Nếu chưa tồn tại product với id trên thì thêm mới
 doc.Descendants("product").Last().AddAfterSelf(new XElement("product",
 new XAttribute("id",txtID.Text),
 new XElement("ProductName",txtProductName.Text),
 new XElement("ProductPrice",txtPrice.Text)));
 doc.Save("data.xml");
 }
 txtID.Enabled = false;
 LoadData();
 }
}
}
 }
Hình ảnh ứng dụng demo:
Và đây là liên kết để các bạn tải về: Demo LINQ 2 XML

«
Bài sau
Newer Post
»
Bài trước
Older Post

Bình luận