Bạn đã biết gì về Quản lý dữ liệu đối tượng với XML? Nếu chưa biết, bài viết dưới đây sẽ giải đáp mọi thắc mắc trong bạn đấy!
Mục lục
XML là gì? Tại sao dùng XML?
XML (Extensible Markup Language) là một ngôn ngữ đánh dấu được tạo ra bởi World Wide Web Consortium (W3C). Giống như HTML, XML sử dụng những cặp thẻ vaf có chức năng truyền đạt và mô tả nhiều loại dữ liệu khác nhau. Từ đó, việc chia sẻ dữ liệu sẽ giữa các hệ thống và nền tảng thông qua mạng Internet sẽ diễn ra vô cùng đơn giản. XML đơn giản thực chất chỉ là các file văn bản thuần túy dùng thẻ tùy chỉnh để mô tả cấu trúc và các tính năng khác của tài liệu.
- Điểm mạnh của XML
Đa năng là một tính từ vô cùng phù hợp để chỉ điểm mạnh của XML. XML có thể được dùng để lưu trữ dữ liệu văn bản (text) thuần túy, có thể dùng để cấu hình cho các chương trình, thiết kế giao diện,… Bên cạnh đó, XML thường được xem là một ngôn ngữ độc lập, dễ được đọc, ghi và hiểu bởi hầu hết các ngôn ngữ. Ngoài ra XML còn được sử dụng bởi vì bản thân ngôn ngữ này có thể được sử dụng trong việc đọc và phân tích dữ liệu khá tốt với độ chính xác cao gần như tuyệt đối.
- Điểm yếu của XML
Bên cạnh những điểm mạnh, XML cũng có một số điểm yếu do thường được lưu trữ dưới dạng file đơn lẻ. Điều này cản trở việc thể hiện các mối quan hệ giữa các file thông tin. Trong một số trường hợp, việc mã hóa dữ liệu với XML cũng có thể mắc phải những sai sót với tỉ lệ lên tới 5%. Mặc dù vậy, với những điểm mạnh và tính gọn, nhẹ, dễ sử dụng, XML vẫn luôn được sử dụng như một lựa chọn hàng đầu.
Sử dụng XML để lưu trữ dữ liệu, đối tượng
Các quy tắc cơ bản
- Tags và elements
Một file XML hoàn chỉnh sẽ được cấu thành bởi các phần tử XML (Element) hay còn gọi là XML-node, XML-tags. Tên các phần tử này sẽ được đặt trong dấu < > như sau: <element>…</element>
- Cú pháp phần tử
Mỗi phần tử XML sẽ phải nằm trong < > với phần tử bắt đầu hoặc kết thúc như sau: <element>….</element> Bash
Hoặc một cách đơn giản hơn: <element/> Bash Lồng các phần tử: Một phần tử XML có thể chứa nhiều phần tử XML khác, nhưng các phần tử con này phải riêng biệt và không đè lên nhau.
Ví dụ: Một thẻ đóng của một phần tử phải có cùng tên như thẻ mở kết nối với nó.
- Thuộc tính
Mỗi một thuộc tính sẽ xác định thuộc tính cho phần tử, sử dụng một cặp tên/ giá trị. Một phần tử XML có thể có một hoặc nhiều thuộc tính.
Ví dụ:
<a href=”//facebook.com/”>FPT Mạng cá cược bóng đá
</a>
Ở đây href là tên thuộc tính và //facebook.com/ là giá trị thuộc tính.
Ngoài ra, còn một vài quy tắc khác để chúng ta viết một file XML chuẩn, những các quy tắc này rất dễ nhớ và dễ sử dụng.
Đọc – Ghi đối tượng với XML
Đúng vậy. XML có thể được sử dụng để lưu trữ dữ dữ liệu dưới dạng danh sách đối tượng. Ví dụ như file sau lưu một danh sách động vật:
Các bạn không nên gõ tay một file XML chút nào, dẫu cho việc đó cũng không hề phải là điều gì đó quá khó khăn. Tuy nhiên, là một Coder, chúng ta sẽ không làm vậy, hoặc vẫn gõ tay – nhưng là gõ code. Đầu tiên chúng ta có rất nhiều cách để thực hiện việc đọc – ghi file XML.
Với C#, ta có thể dử dụng: System.Xml.Serialization;
Ta có một lớp Dongvat.cs như sau:
Lưu ý lớp này phải là public và chứa 1 constructor không tham số.
Tới đây, chỉ cần có đường dẫn file xml là chúng ta có thể thực hiện việc đọc ghi rất dễ dàng.
Đọc từ file XML một danh sách đối tượng (List): Đầu tiên ta cần kiểm tra xem đường dẫn của file có tồn tại hay không. Giả định path là chuỗi chứa đường dẫn file thì ta chỉ cần sử dụng câu lệnh:
if (!File.Exists(path)) // Nếu đường dẫn không tồn tại
Lúc này chúng ta sẽ đưa ra câu lệnh thông báo và nếu trả về chúng ta sẽ trả về một danh sách rỗng hoặc giá trị null.
Tiếp theo, nếu file thực sự tồn tại, chúng ta sẽ thực hiện việc đọc file. Do quá trình này có thể xảy ra rất nhiều loại lỗi nên chúng ta cần sử dụng cấu trúc try-catch để thực hiện và thông báo ra lỗi mà không gây ra những sự “Sợ hãi” khi lỡ dính phải những Exception không mong muốn.
Ta sẽ tạo ra một đối tượng XmlSerializer để thực hiện việc đọc, chẳng hạn nếu chúng ta muốn đọc 1 danh sách Dongvat thì câu lệnh sẽ như sau:
XmlSerializer xs = new XmlSerializer(typeof(List<Dongvat>));
Với một vài dòng code xử lý, ép kiểu, cuối cùng ta cũng sẽ thu được một danh sách đối tượng mong muốn, dĩ nhiên là nếu không có lỗi nào xảy ra và trong file đó có dữ liệu. Code cụ thể sẽ như sau:
Ghi vào file XML một danh sách đối tượng
Tương tự như đọc file, việc ghi file cũng thực hiện những giai đoạn gần tương đương, chỉ khác là thay vì đọc, chúng ta sẽ ghi (Không phải gõ bằng tay) Nội dung code như sau:
Trong trường hợp chúng ta muốn ghi các đối tượng thuộc kiểu dữ liệu khác thì sao? C# cho phép chúng ta có một số cách để thực hiện công việc này ví dụ như sử dụng kiểu dữ liệu linh hoạt dynamic hay sử dụng Generic. Sau đây là cách sử dụng Generic (sửa code và sử dụng kiểu T, U, V…)
Bạn đã hiểu rồi chứ? Quản lý dữ liệu đối tượng XML sẽ thật đơn giản nếu bạn biết những mẹo “hay ho” trên? Hãy tìm hiểu thật kỹ để dung nạp thêm nhiều kiến thức bổ ích về XML nhé! Chúc các bạn học tốt!
Bộ môn Phát triển phần mềm
Cao đẳng FPT Mạng cá cược bóng đá Hà Nội