XML
Ngôn ngữ đánh dấu mở rộng, ngôn ngữ đánh dấu mô tả cấu trúc dữ liệu bằng thẻ.
XML (Extensible Markup Language) là ngôn ngữ đánh dấu đa năng mô tả cấu trúc dữ liệu bằng thẻ. Được W3C chuẩn hóa năm 1998, nó bắt nguồn từ SGML giống như HTML nhưng có khả năng tự do định nghĩa thẻ tùy chỉnh. Khả năng biểu diễn rõ ràng ý nghĩa và cấu trúc dữ liệu đã dẫn đến việc áp dụng rộng rãi như định dạng trao đổi dữ liệu giữa các hệ thống khác nhau.
Quy tắc cú pháp XML nghiêm ngặt hơn HTML. Tất cả thẻ phải được đóng (<br />), giá trị thuộc tính phải được đặt trong dấu ngoặc kép, phân biệt chữ hoa chữ thường, và chỉ cho phép một phần tử gốc. Các ký tự đặc biệt (<, >, &, ", ') phải được escape bằng tham chiếu thực thể (<, >, v.v.). Sự nghiêm ngặt này đơn giản hóa triển khai parser và nâng cao độ tin cậy dữ liệu.
Mặc dù JSON đang thay thế XML làm định dạng phản hồi REST API, XML vẫn được ưu tiên trong một số tình huống: khi cần biểu diễn cấu trúc tài liệu phong phú (nội dung hỗn hợp, thuộc tính và văn bản cùng tồn tại), yêu cầu xác thực lược đồ nghiêm ngặt, cần quản lý từ vựng dựa trên namespace, hoặc đòi hỏi tương thích với hệ thống hiện có. XML cũng được thiết lập như tiêu chuẩn ngành trong các lĩnh vực như giao thức FIX tài chính và HL7 y tế.
So sánh XML và JSON, XML có xu hướng dài dòng do thẻ và thuộc tính nhưng hỗ trợ xác thực lược đồ và chú thích. JSON đơn giản và nhẹ hơn nhưng thiếu chú thích và yêu cầu JSON Schema như cơ chế riêng biệt cho xác thực.
Từ góc độ đếm ký tự, các phần tử cú pháp phong phú của XML (thẻ, thuộc tính) dẫn đến số ký tự cao hơn JSON hoặc YAML cho cùng dữ liệu. Ví dụ, <name>Taro</name> là 19 ký tự trong khi "name": "Taro" của JSON là 14 ký tự. Chi phí này cần được xem xét khi tối ưu hóa kích thước phản hồi API hoặc giảm khối lượng truyền dữ liệu.