Xử Lý XML Trong C# – Norid's Blog
Có thể bạn quan tâm
Để sử dụng XML trên C#:
using System.Xml.Linq;Cấu trúc cơ bản:
XML được xây dựng dựa vào cấu trúc các node lồng nhau, mỗi node sẽ có 1 thẻ mở và đóng. Thông thường XML có cấu trúc gồm:
- phần Header(lưu version xml đang sử dụng và kiểu mã hóa). Ex: <?xml version=”1.0″ encoding=”utf-8″ standalone=”yes”?>
- Node Root: là thẻ ngoài cùng, thường khai báo tên chính của tài liệu. Ở ví dụ phía dưới Node Root là: “Students”.
- Node con: thường gồm 2 phần: Attribute (chứa thuộc tính unique để phân biệt với các node khác, và mỗi node chỉ có 1 attribute) và Element
Trong C#: Xdocument chứa 1 list XELement Cho một file xml như sau:
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <!--Creating an XML Tree using LINQ to XML--> <Students> <Student Id="101"> <Name>Mark</Name> <Gender>Male</Gender> <TotalMarks>800</TotalMarks> </Student> <Student Id="102"> <Name>Rosy</Name> <Gender>Female</Gender> <TotalMarks>900</TotalMarks> </Student> <Student Id="103"> <Name>Pam</Name> <Gender>Female</Gender> <TotalMarks>850</TotalMarks> </Student> <Student Id="104"> <Name>John</Name> <Gender>Male</Gender> <TotalMarks>950</TotalMarks> </Student> </Students>Trong văn bản XML trên:
- Students là node root
- Student là node con đại diện cho 1 record
- Student có 1 attribute là Id
- Student có 3 node con(element) là Name, Gender, TotalMarks
Đọc file XML bằng Linq
string path = @"D:\LuyenTap\WSC\181019\xml\Student.xml"; XDocument xDocument = XDocument.Load(path); var data = xDocument.Descendants("Student").Where(t => Int32.Parse(t.Attribute("Id").Value) > 100). Select(o => new { id = o.Attribute("Id").Value, name = o.Element("Name").Value, gender = o.Element("Gender").Value }).ToList(); int i = 0; foreach (var item in data) { listView1.Items.Add(item.id); listView1.Items[i].SubItems.Add(item.name); listView1.Items[i].SubItems.Add(item.gender); i++; }Ở đây mình đọc file và hiển thị dữ liệu lên thông qua listview
- Descendants: Parse file xml để query linq, giá trị đặt trong Descendants thường là node con chứa các Attribute và Element để truy vấn.Descendants sẽ duyệt hết file tìm những phần tử có Tên trùng với “Student” tạo thành 1 list. VD trên list sẽ có 4 students, mỗi student sẽ có các thuộc tính riêng, muốn truy cập phải dùng attribute hoặc element.
- Cơ chế câu query trên sẽ duyệt tất cả các node “Student” thõa điều kiện.
- Nếu trong Node có chứa các node khác thì chỉ cần x.Element(“tên node”) kết quả sẽ xuất ra dữ liệu, tiếp tục truy vấn
Thêm dữ liệu XML
string path = @"D:\LuyenTap\WSC\181019\xml\Student.xml"; XDocument xDocument = XDocument.Load(path); XElement xElement = new XElement("Student"); xElement.SetAttributeValue("Id", 225); xElement.SetElementValue("Name", "Phuc"); xElement.SetElementValue("Gender", "Male"); xElement.SetElementValue("TotalMarks", 100); xDocument.Element("Students").Add(xElement); xDocument.Save(path);- Xelement: Tạo record Student mới
- Id phải unique để dễ phân biệt với các Id của node khác
Ý tưởng: Lúc đầu vẫn load dựa trên đường dẫn path, sau đó tạo một đối tượng element có tên xElement. Set các AttributeValue và ElementValue cho đối tượng, sau đó lưu record Student vừa tạo vào node root Students và save lại theo đường dẫn.
Đối với file chưa có sẵn
Readmore: https://www.mastercode.vn/blog/web-development/bai-9-serialization-nen-tang-lap-trinh-c.57
Xóa dữ liệu XML
string path = @"D:\LuyenTap\WSC\181019\xml\Student.xml"; XDocument xDocument = XDocument.Load(path); var studentFilter = xDocument.Descendants("Student").Where(x => Int32.Parse(x.Element("TotalMarks").Value) == 100).FirstOrDefault(); studentFilter.Remove(); xDocument.Save(path); LoadData();Ý tưởng: truy vấn để tất cả record Student để tìm ra 1 record thõa mãn. Và dùng hàm Remove() để xóa record vừa tìm được và cập nhật lại file.
Sửa dữ liệu XMLTương tự như xóa:
string path = @"D:\LuyenTap\WSC\181019\xml\Student.xml"; XDocument xDocument = XDocument.Load(path); var studentFilter = xDocument.Descendants("Student").Where(x => Int32.Parse(x.Element("TotalMarks").Value) == 100).FirstOrDefault(); //Cách khác: studentFilter.SetElementValue("Name","Phuc") studentFilter.Element("Name").Value = "Phuc"; xDocument.Save(path); LoadData();Share this:
Related
Từ khóa » Thêm Xóa Sửa Xml Trong C#
-
[C#] Hướng Dẫn Thêm Xóa Sửa XML File Trong Winform Linq
-
Thêm Xóa Sửa Tài Liệu Xml Trong C# - Dotnet Group
-
THÊM XÓA SỬA XML TRONG C# - CRUD XML In C# - YouTube
-
Tạo File XML. Thêm, Sửa, Xóa Trên File XML Bằng C# - YouTube
-
13-LINQ#3.Thêm Sửa Xoá Nội Dung File XML Với LINQ To XML
-
Đọc, Ghi, Xóa Dữ Liệu XML Trong C#, - Itseovn
-
Linq To XML Thêm Sửa Xóa - GÓC LẬP TRÌNH
-
[CSharp - XML DOM] Lập Trình C# Thao Tác Dữ Liệu Trên File XML
-
[CSharp - XML DOM] Lập Trình C# Thao Tác Dữ Liệu Trên File XML
-
Giúp Em Cách Thêm, Sửa, Xóa 1 Node Trong 1 File XML Có Sẵn-coder ...
-
Xư Lí Thêm Sửa Xóa XML Trong C - Cộng đồng C Việt
-
Đề Xuất 7/2022 # Đọc Ghi Dữ Liệu Xml Trong C# # Top Like