Bộ chuyển đổi XML sang JSON Miễn phí

Chuyển đổi XML sang JSON ngay lập tức. Xử lý thuộc tính, phần tử lồng nhau và nút văn bản. Chạy hoàn toàn trong trình duyệt của bạn.

Dữ liệu của bạn không bao giờ rời thiết bị của bạn
Thả tệp XML vào đây hoặc nhấp để duyệt (tối đa 5 MB)

XML là gì?

XML (Ngôn ngữ Đánh dấu Mở rộng) là một định dạng để lưu trữ và truyền dữ liệu. Nó sử dụng các thẻ tùy chỉnh để mô tả cấu trúc dữ liệu, làm cho nó dễ đọc và được hỗ trợ rộng rãi. Không giống như JSON, XML có thể bao gồm thuộc tính trên các phần tử.

Tại sao chuyển đổi XML sang JSON?

Câu hỏi thường gặp

Các thuộc tính XML được xử lý như thế nào?

Thuộc tính XML được chuyển đổi thành thuộc tính JSON với tiền tố @ (ví dụ: @id, @href). Điều này bảo toàn thông tin thuộc tính trong cấu trúc JSON.

Thế còn namespace thì sao?

Namespace được bảo lưu trong đầu ra. Tiền tố được bao gồm trong tên phần tử (ví dụ: "ns:element").

Tôi có thể chuyển đổi JSON ngược lại thành XML không?

Công cụ này chuyển đổi XML sang JSON. Để làm điều ngược lại, bạn có thể sử dụng bộ chuyển đổi JSON sang XML của chúng tôi.

Hai định dạng, cách nhau ba thập kỷ

XML 1.0 trở thành Khuyến nghị W3C vào ngày 10 tháng 2 năm 1998. Các biên tập viên gốc là Tim Bray (Textuality / Netscape), Jean Paoli (Microsoft) và C. M. Sperberg-McQueen (Đại học Illinois tại Chicago); Ban Làm việc do Jon Bosak của Sun Microsystems chủ trì. Xuất xứ của XML bắt nguồn từ SGML (ISO 8879:1986), tiêu chuẩn đánh dấu tài liệu vốn phát triển từ GML của IBM trong thập niên 1970. SGML mạnh mẽ nhưng phức tạp; mục tiêu thiết kế của XML là «design a 'lite' version of SGML», cắt giảm các tính năng tùy chọn xuống một cấu hình có thể triển khai trong vài nghìn dòng code trong khi vẫn giữ Unicode, namespace và tài liệu giàu thuộc tính.

JSON (JavaScript Object Notation) được khám phá, không phải thiết kế. Douglas Crockford và Chip Morningstar gửi tin nhắn JSON đầu tiên vào tháng 4 năm 2001 tại State Software, rút ra định dạng từ cú pháp object-literal của JavaScript. Crockford đăng ký json.org vào năm 2002 và đăng đặc tả một trang. Định dạng được chính thức hóa lần đầu thành RFC 4627 vào tháng 7 năm 2006, tái ban hành thành RFC 7159 năm 2014, và ổn định thành RFC 8259 / STD 90 vào tháng 12 năm 2017, cùng năm ECMA-International xuất bản ECMA-404. Mục tiêu thiết kế của JSON (theo hồi ký của Crockford): tối giản, độc lập ngôn ngữ, dễ tạo và phân tích, không có số phiên bản («không có số phiên bản»), và cố tình không có comment («Tôi đã bỏ comment vì thấy mọi người dùng chúng để chứa chỉ thị phân tích»).

JSON chiếm lĩnh API web vào cuối những năm 2000 khi REST thay thế SOAP và XMLHttpRequest nhường chỗ cho JSON-over-fetch. Đến năm 2015, JSON là định dạng phản hồi mặc định của hầu hết mọi API công khai; XML còn tồn tại trong SOA doanh nghiệp dài hơi, định dạng tài liệu (Office Open XML, OpenDocument) và các niche ràng buộc tiêu chuẩn.

XML và JSON khác nhau ở điểm nào

XMLJSON
Thuộc tínhHạng nhất (<item id="5"/>)Không có thuộc tính, mọi thứ đều là cặp key/value
NamespaceGốc (xmlns:prefix="uri")Tên phẳng; xung đột prefix là vấn đề của ứng dụng
Comment<!-- … -->Không có theo đặc tả
Nội dung hỗn hợpGốc (<p>text <b>and</b> markup</p>)Khó xử, cần mảng hoặc chuỗi hóa
SchemaDTD, XSD 1.0 (2001) / 1.1 (2012), RELAX NG, SchematronJSON Schema (đặc tả cộng đồng, bản nháp 2020-12)
Thứ tựThứ tự phần tử có ý nghĩa theo đặc tảThứ tự key của object không được đảm bảo (hầu hết trình phân tích giữ thứ tự chèn trên thực tế); mảng có thứ tự
SốChuỗi cho đến khi được schema định kiểuIEEE 754 double; không phân biệt số nguyên/số thực ở cấp độ đặc tả
Độ dài dòngCao (mọi giá trị được bọc trong thẻThấp) chỉ có dấu câu

Tại sao XML→JSON về cơ bản là mất mát

Không có ánh xạ chuẩn hóa W3C từ XML sang JSON. Mọi công cụ chuyển đổi phải tự nghĩ ra câu trả lời cho những câu hỏi mà XML cho phép diễn đạt nhưng JSON không có từ vựng gốc. Những quyết định thường gặp:

Khi nào bạn dùng công cụ này

Các lựa chọn thay thế hiện đại

Câu hỏi thêm

Tại sao cùng một XML lại tạo ra hình dạng JSON khác nhau trên các công cụ khác nhau?

Vì không có ánh xạ XML→JSON chuẩn hóa. Mỗi công cụ chuyển đổi chọn một quy ước (BadgerFish, Parker, JsonML, kiểu GData) và các hình dạng JSON kết quả khác nhau về cách đánh dấu thuộc tính, cách bảo toàn nội dung hỗn hợp và cách mảng hóa các con lặp lại. Chuyển đổi vòng XML qua các công cụ khác nhau tạo ra JSON khác nhau; chuyển đổi vòng JSON trở lại XML qua các công cụ khác nhau có thể thay đổi vị trí thuộc tính và thậm chí thứ tự phần tử. Để tương thích, hãy ghi lại quy ước bạn đang dùng và nhất quán với nó.

Còn CDATA, comment và processing instruction thì sao?

Phần CDATA (<![CDATA[…]]>) được làm phẳng thành nội dung chuỗi thông thường, wrapper biến mất nhưng văn bản bên trong được giữ nguyên. Comment XML (<!-- … -->) và processing instruction (<?xml-stylesheet …?>) bị bỏ, vì JSON không có cú pháp cho cả hai. Nếu bạn cần độ trung thực vòng lặp bảo toàn comment, cách tiếp cận đúng là chỉ dùng XML.

XML schema (XSD) của tôi có tồn tại qua quá trình chuyển đổi không?

Không. XSD mô tả cấu trúc và kiểu XML; JSON Schema là tiêu chuẩn tương tự (riêng biệt) cho JSON. Một số công cụ nâng cao có thể dịch XSD sang JSON Schema, nhưng đó là thao tác mất mát, XSD có các tính năng (nội dung hỗn hợp, substitution group, derived type) không có tương đương JSON Schema rõ ràng. Đối với xác thực tài liệu quan trọng, hãy chạy XSD với XML gốc, không phải với bản chuyển đổi JSON.

Tại sao JSON thắng cho API web?

Một vài lý do. JSON ánh xạ trực tiếp vào object JavaScript, nên phân tích phía trình duyệt chỉ là một lần gọi JSON.parse(). Định dạng nhỏ hơn nhiều, không có thẻ đóng, không khai báo namespace, không có gánh nặng schema. REST đã thay thế SOAP cho hầu hết API công khai vào cuối những năm 2000, và JSON là payload tự nhiên cho REST. Điểm mạnh của XML (schema nghiêm ngặt, namespace, nội dung hỗn hợp) quan trọng đối với tài liệu và hệ thống doanh nghiệp kế thừa nhưng hiếm khi cho «give me the user object». Web tối ưu hóa cho trường hợp đơn giản hơn.

Có dữ liệu nào được gửi lên máy chủ không?

Không. XML được phân tích bởi DOMParser gốc của trình duyệt, rồi duyệt đệ quy bằng JavaScript để xây dựng đầu ra JSON. XML được dán vào không bao giờ rời khỏi trang. Công cụ hoạt động ngoại tuyến sau khi đã tải, điều này quan trọng khi XML nguồn chứa endpoint API nội bộ, dữ liệu khách hàng hoặc schema độc quyền mà bạn không muốn tải lên bất kỳ đâu.

Công cụ liên quan