XML là gì? Tìm hiểu cú pháp và các thao tác với file XML

48836

Trong lập trình ứng dụng web, XML được sử dụng nhiều nhất là xây dựng các API Service. Các API sẽ trả kết quả về dạng XML hoặc JSON để các hệ thống khác có thể nói nói chuyện với nhau được. Hiện nay tuy JSON được sử dụng phổ biến hơn, nhưng XML cũng vẫn đang được dùng bởi nhiều hệ thống lớn. Cùng TopDev tìm hiểu XML là gì thật chi tiết trong bài viết dưới đây!

XML là gì?

XML là từ viết tắt của từ Extensible Markup Language là ngôn ngữ đánh dấu mở rộng được thiết kế để lưu trữ và truyền tải dữ liệu một cách có cấu trúc. Tác dụng chính của XML là đơn giản hóa việc chia sẻ dữ liệu giữa các nền tảng và các hệ thống được kết nối thông qua mạng Internet.

Ngôn ngữ XML do Tổ chức World Wide Web Consortium (W3C) đề xuất, được tạo ra để hỗ trợ việc xây dựng các dịch vụ API. XML có khả năng truyền và đọc nhiều loại dữ liệu khác nhau. Kết quả từ API thường được trả về dưới dạng XML, cho phép các hệ thống khác nhau dễ dàng giao tiếp với nhau.

Ví dụ khi ta xây dựng một ứng dụng bằng php và một ứng dụng bằng Java thì hai ngôn ngữ này không thể hiểu nhau, vì vậy ta sẽ sử dụng XML để trao đổi dữ liệu. Chính vì vậy, XML có tác dụng rất lớn trong việc chia sẻ, trao đổi dữ liệu giữa các hệ thống.

Ưu và nhược điểm của XML

Ưu điểm của XML

Ưu điểm lớn nhất của XML là sự độc lập. XML được sử dụng để mô tả dữ liệu dưới dạng text, nên hầu hết các phần mềm hay các chương trình bình thường đều có thể đọc được chúng.

XML có thể đọc và phân tích nguồn dữ liệu khá dễ dàng nên nó được sử dụng với mục đích chính là trao đổi dữ liệu giữa các chương trình, các hệ thống khác nhau. XML được sử dụng cho Remote Procedure Calls nhằm phục vụ cho các dịch vụ của website.

Tương thích tốt với các công nghệ khác: XML dễ dàng tích hợp với các ngôn ngữ và công nghệ khác như HTML, CSS, JavaScript, và đặc biệt là các giao thức web như SOAP (Simple Object Access Protocol) để trao đổi dữ liệu.

Hỗ trợ tốt cho cấu trúc dữ liệu phân cấp: XML có khả năng biểu diễn các cấu trúc dữ liệu phân cấp, chẳng hạn như cây dữ liệu. Điều này giúp XML lý tưởng cho việc mô tả các cấu trúc phức tạp như cấu trúc thư mục hoặc tài liệu.

Nhược điểm của XML

Tốn kém tài nguyên: XML có cú pháp dài và phức tạp, điều này dẫn đến tệp XML thường lớn hơn nhiều so với các định dạng khác như JSON. Kích thước lớn làm cho XML ít hiệu quả khi cần truyền tải dữ liệu qua mạng hoặc lưu trữ trên thiết bị có dung lượng giới hạn.

Tốc độ xử lý chậm: Do XML yêu cầu cú pháp phức tạp và cấu trúc dữ liệu phân cấp, việc phân tích và xử lý các tệp XML tốn thời gian và tài nguyên hơn so với các định dạng đơn giản hơn như JSON. Điều này có thể gây ra vấn đề về hiệu suất trong các ứng dụng thời gian thực.

Thiếu tính năng xử lý trực tiếp: XML không có cơ chế xử lý trực tiếp các kiểu dữ liệu khác nhau (như số nguyên, số thực, boolean) như JSON. Tất cả dữ liệu trong XML đều ở dạng chuỗi, điều này đòi hỏi việc chuyển đổi dữ liệu thủ công, gây ra rắc rối cho các nhà phát triển.

Xem thêm so sánh XML và JSON từ W3Schools: https://www.w3schools.com/js/js_json_xml.asp

So sánh XML với HTML

Không giống như HTML, XML không nhằm mục đích hiển thị dữ liệu mà tập trung vào việc mô tả, tổ chức và trao đổi dữ liệu giữa các hệ thống khác nhau.

So sánh XML với HTML

XML và HTML giống nhau đều là các thẻ (tag)

XML HTML
XML cho phép người dùng tạo biểu tượng đánh dấu riêng để mô tả nội dung, tạo một biểu tượng không giới hạn và tự định nghĩa Được định nghĩa trước và người dùng phải tuân thủ
Được thiết kế để chuyển tải và lưu trữ dữ liệu Được thiết kế để hiển thị dữ liệu

Tuy nhiên XML không phải là sự thay thế cho HTML.

  • Ví dụ:
<?xml version="1.0" encoding="UTF-8"?>
     <article>
         <title>XML là gì</title>
         <author>TopDev Blog</author>
         <year>2021</year>
     </article>

XML thường được sử dụng làm cơ sở cho các định dạng tài liệu khác. Dưới đây là một số định dạng bạn có thể biết:

  • RSS
  • Microsoft .NET sử dụng XML cho các file cấu hình của nó.
  • Sitemap

Cú pháp của XML

Một XML đầy đủ:

<?xml version="1.0"?>
<contact-info>
<name>Nhat</name>
<company>TopDev</company>
<phone>(084) 123-4567</phone>
</contact-info>

Bạn để ý trong ví dụ trên có hai loại thông tin:

  • Thông tin đánh dấu, như <contact-info> và
  • Text, hoặc dữ liệu là ký tự, như TopDev(084) 123-4567.

Sơ đồ sau minh họa qui tắc cú pháp để viết các kiểu đánh dấu và text khác nhau trong một tài liệu XML.

 

Chúng ta đi vào giải thích chi tiết cho từng phần:

1. Khai báo XML (XML Declaration)

Tài liệu XML có thể tùy ý có một phần khai báo XML. Nó được viết như sau:

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

Ở đây, version là phiên bản XML và encoding xác định mã hóa ký tự được sử dụng trong tài liệu.

2. Các qui tắc cú pháp để khai báo XML

  • Khai báo XML (XML declaration) là phân biệt kiểu chữ và phải bắt đầu với “<?xml>” ở đây “xml” viết ở dạng chữ thường.
  • Nếu tài liệu chứa khai báo XML, thì nó phải là lệnh đầu tiên của tài liệu XML.
  • Khai báo XML phải là lệnh đầu tiên của tài liệu XML.
  • Một HTTP Protocol có thể ghi đè giá trị của encoding mà bạn đặt trong khai báo XML.

3. Tags và Elements

Một XML file được cấu thành bởi một số phần tử XML (Element), còn được gọi là XML-node hoặc XML-tags. Tên các phần tử XML được bao trong các dấu < > như sau:

<element>

4. Qui tắc cú pháp (Syntax Rules) cho các thẻ và phần tử

Cú pháp phần tử: Mỗi phần tử XML cần được bao trong hoặc với phần tử bắt đầu hoặc kết thúc như sau:

<element>....</element>

Hoặc đơn giản theo cách:

<element/>

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ư là con của nó, nhưng các phần tử con này phải 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ó.

Ví dụ sau minh họa các thẻ lồng nhau sai cú pháp:

<?xml version="1.0"?>
<contact-info>
<company>TopDev
<contact-info>
</company>

Ví dụ sau minh họa các thẻ lồng nhau đúng cú pháp:

<?xml version="1.0"?>
<contact-info>
<company>TopDev</company>
<contact-info>

Phần tử gốc (Root Element): Một tài liệu XML có thể chỉ có một phần tử gốc. Ví dụ sau minh họa một tài liệu XML sai cú pháp, bởi vì cả hai phần tử x và y xuất hiện ở cấp cao nhất mà không phải là một phần tử gốc.

<x>...</x>
<y>...</y>

Còn đây là ví dụ về đúng cú pháp:

<root>
   <x>...</x>
   <y>...</y>
</root>

Phân biệt kiểu chữ: Tên của các phần tử XML là phân biệt kiểu chữ. Nghĩa là tên của thẻ mở và thẻ đóng phải cùng kiểu.

Ví dụ, <contact-info> là khác với <Contact-Info>.

5. Thuộc tính (Attributes)

Một thuộc tính 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="https://topdev.vn/">TopDev</a>

Ở đây href là tên thuộc tính và https://topdev.vn/ là giá trị thuộc tính.

6. Qui tắc cú pháp cho thuộc tính trong XML

    • Tên thuộc tính trong XML là phân biệt kiểu chữ (không giống như HTML). Tức là, HREF và href là hai thuộc tính khác nhau trong XML.
    • Cùng một thuộc tính không thể có hai giá trị trong một cú pháp. Ví dụ sau là sai cú pháp bởi vì thuộc tính b được xác định hai lần:
<a b="x" c="y" b="z">....</a>
    • Tên thuộc tính được định nghĩa không có sự trích dẫn, trong khi giá trị thuộc tính phải luôn luôn trong các dấu trích dẫn. Ví dụ sau là sai cú pháp:
<a b=x>....</a>

Trong ví dụ này, giá trị thuộc tính không được định nghĩa trong các dấu trích dẫn.

7. Tham chiếu trong XML

Tham chiếu (References) thường cho phép bạn thêm hoặc bao phần text hoặc phần đánh dấu bổ sung trong một tài liệu XML. Các tham chiếu luôn luôn bắt đầu với biểu tượng “&” , đây là ký tự dành riêng và kết thúc với ký tự “;”. XML có hai kiểu tham chiếu:

Tham chiếu thực thể (Entity Reference): Một tham chiếu thực thể chứa một tên giữa dấu tách mở và dấu tách đóng. Ví dụ: &amp; có amp là tênTên tham chiếu tới một chuỗi văn bản hoặc đánh dấu đã được định nghĩa trước.

Tham chiếu ký tự (Character Reference): Chứa các tham chiếu, ví dụ &#65;, chứa một dấu băm (#) được theo sau bởi một số. Số này luôn luôn tham chiếu tới mã hóa Unicode của ký tự. Trong ví dụ này, 65 tham chiếu tới chữ cái “A”.

8. Text trong XML

  • Tên của phần tử XML và thuộc tính XML là phân biệt kiểu chữ, nghĩa là tên của phần tử mở và phần tử đóng phải ở được viết cùng kiểu.
  • Để tránh các vấn đề về mã hóa ký tự, tất cả XML file nên được lưu ở dạng Unicode UTF-8 hoặc UTF-16.
  • Các ký tự whitespace như khoảng trắng, tab và ngắt dòng giữa các phần tử XML và giữa các thuộc tính XML sẽ bị bỏ qua.
  • Một số ký tự được dành riêng trong cú pháp XML. Vì thế, chúng không thể được sử dụng một cách trực tiếp. Để sử dụng chúng, một số thực thể thay thế được sử dụng, các thực thể này được liệt kê trong bảng dưới:
Ký tự không được phép sử dụng Thực thể thay thế Miêu tả
< &lt; Nhỏ hơn
> &gt; Lớn hơn
& &amp;
&apos; Dấu nháy đơn
&quot; Trích dẫn kép

Bạn có thể tham khảo video tóm tắt về XML:

Mặc dù vẫn tồn tại một số nhược điểm, XML vẫn là một công cụ mạnh mẽ và phổ biến trong việc lưu trữ và trao đổi dữ liệu, đặc biệt trong các ứng dụng yêu cầu tính linh hoạt và cấu trúc rõ ràng. Hi vọng qua bài viết này của TopDev, bạn đã hiểu được XML là gì, cú pháp cũng như ưu nhược điểm của XML. Theo dõi TopDev để cập nhật kiến thức công nghệ mỗi ngày!

Xem việc làm IT mới nhất tại TopDev