Công cụ XML sang JSON online miễn phí, sử dụng DOMParser của trình duyệt để phân tích XML và tự động chuyển đổi thành đối tượng JSON chuẩn. Thuộc tính XML được ánh xạ trực tiếp thành trường, phần tử lặp cùng tên tự động gộp thành mảng, nội dung văn bản phần tử lưu vào trường value; đồng thời hỗ trợ xuất định dạng kép JSON và YAML, prettyPrint định dạng và tự sửa lỗi XML, xử lý hoàn toàn cục bộ trên trình duyệt.

Đề xuất Liên quan

Về XML sang JSON: Tự động chuyển đổi dữ liệu XML thành đối tượng JSON chuẩn

XML sang JSON là quá trình chuyển đổi dữ liệu ở định dạng XML (eXtensible Markup Language — Ngôn ngữ đánh dấu mở rộng) như tin nhắn SOAP, nguồn cấp RSS, tệp cấu hình thành đối tượng JSON (JavaScript Object Notation — Ký hiệu đối tượng JavaScript). XML là định dạng dữ liệu truyền thống của hệ thống doanh nghiệp, SOAP Web Service, tệp cấu hình, tài liệu Office; JSON là tiêu chuẩn thực tế của Web API hiện đại, JavaScript, cơ sở dữ liệu NoSQL. Hai định dạng mỗi định dạng có ưu điểm: XML tự mô tả chặt chẽ, hỗ trợ rộng rãi không gian tên và xác thực schema; JSON ngắn gọn dễ phân tích, tương thích tự nhiên với JavaScript. Trong phát triển thường cần chuyển tin nhắn XML thành JSON cho frontend hiện đại hoặc microservices sử dụng, công cụ này nhằm tự động hóa quá trình này.

Cốt lõi của công cụ này là sử dụng DOMParser gốc của trình duyệt để phân tích XML, và tự động duyệt cây DOM để tạo đối tượng JSON. DOMParser là trình phân tích XML tích hợp sẵn của trình duyệt, tuân thủ tiêu chuẩn W3C DOM, hỗ trợ tất cả các tính năng XML 1.0 bao gồm không gian tên XML, CDATA, chú thích, thuộc tính. Ưu điểm của phân tích dựa trên DOM là không phụ thuộc, hiệu năng tốt, tuân thủ tiêu chuẩn.

Quy tắc ánh xạ chuyển đổi rất trực quan: mỗi phần tử XML chuyển thành đối tượng JSON, thuộc tính của phần tử chuyển trực tiếp thành trường của đối tượng (không sử dụng tiền tố @, tránh quy ước đặt tên lộn xộn phổ biến); nội dung văn bản của phần tử lưu vào trường value; các phần tử lặp cùng tên tự động gộp thành mảng. Ví dụ <bookstore><book id="1"><title>Great Gatsby</title></book><book id="2"><title>Brief History</title></book></bookstore> sẽ được chuyển thành {bookstore: {book: [{id: "1", title: {value: "Great Gatsby"}}, {id: "2", title: {value: "Brief History"}}]}}.

Ánh xạ thuộc tính sử dụng chế độ ánh xạ trực tiếp không tiền tố là lựa chọn thiết kế quan trọng của công cụ này. Nhiều công cụ chuyển đổi XML sử dụng tiền tố đặc biệt như @attribute, #text để phân biệt thuộc tính và văn bản, điều này mặc dù chính xác nhưng cấu trúc JSON tạo ra khá lạ, khó sử dụng trực tiếp trong JavaScript. Việc ánh xạ trực tiếp thuộc tính của công cụ này làm cho JSON tạo ra gần gũi hơn với mô hình dữ liệu nghiệp vụ thực tế, nhà phát triển có thể định nghĩa kiểu tương ứng trực tiếp trong TypeScript interface.

Mảng hóa phần tử lặp là một thiết kế quan trọng khác của XML sang JSON. XML không có khái niệm mảng nguyên bản, cần biểu thị dữ liệu danh sách thông qua các phần tử lặp lại (như nhiều <item>). Công cụ này tự động phát hiện các thẻ lặp cùng tên dưới cùng một phần tử cha và gộp thành mảng, phù hợp với ngữ nghĩa danh sách của JSON, tránh mất dữ liệu hoặc cần gộp thủ công.

Xuất định dạng kép (JSON + YAML) là thiết kế khác biệt của công cụ này. YAML là một định dạng tuần tự hóa dữ liệu phổ biến khác, được sử dụng rộng rãi trong các tình huống cấu hình như Kubernetes, Docker Compose, Ansible, GitHub Actions. Công cụ tích hợp sẵn bộ chuyển đổi YAML đơn giản, hỗ trợ thụt lề 2 khoảng trắng chuẩn, tiền tố danh sách -, ngăn cách cặp khóa-giá trị :. Nhấp nút chuyển đổi JSON/YAML để chuyển đổi giữa hai định dạng theo thời gian thực.

Tự sửa lỗi XML (tryFixXML) nâng cao khả năng chịu lỗi của công cụ. Trong thực tế, XML người dùng nhập thường thiếu khai báo XML (<?xml version="1.0"?>), hoặc thẻ tự đóng (như <br>, <img>) sử dụng kiểu HTML <br> thay vì kiểu XML <br />. Công cụ sẽ tự động thêm khai báo XML, bổ sung / cho thẻ tự đóng, giúp nhiều XML không chuẩn có thể được DOMParser phân tích chính xác.

Định dạng và nén XML (formatXML/compressXML) dựa trên thư viện xml-formatter. Chế độ prettyPrint xuất ra XML dễ đọc với thụt lề 2 khoảng trắng, giữ lại ngắt dòng; chế độ nén xuất ra XML nhỏ gọn một dòng không khoảng trắng thích hợp cho truyền mạng. Nhà phát triển có thể trực tiếp sử dụng công cụ để nén XML rồi lưu vào cơ sở dữ liệu, tiết kiệm 30-50% không gian lưu trữ.

Chuyển đổi tự động theo thời gian thực là tính năng thiết thực của công cụ. Sau khi nhập XML tự động kích hoạt chuyển đổi với debounce 500ms, kết hợp với 6 phím tắt (macOS ⇧⌘+F/C/T/O/D/K), người dùng có thể nhanh chóng hoàn thành các thao tác thường dùng như định dạng, nén, chuyển đổi, tải lên, tải xuống, xóa mà không cần nhấp chuột.

Xử lý cục bộ thuần túy trên trình duyệt là kiến trúc cốt lõi của công cụ này. Tất cả phân tích XML, duyệt DOM, tuần tự hóa JSON, chuyển đổi YAML đều thực thi trong JavaScript của trình duyệt, DOMParser được trình duyệt cung cấp nguyên bản (không cần đóng gói thư viện phân tích XML), xml-formatter là gói npm nhẹ (dưới 30KB). Dữ liệu XML gốc không tải lên máy chủ, tin nhắn SOAP nhạy cảm (như chứa thông tin đơn hàng, dữ liệu người dùng) có thể xử lý an toàn cục bộ.

Trường hợp sử dụng

  • Khi tích hợp các API doanh nghiệp legacy chỉ trả về phản hồi XML như cổng thanh toán, ERP, CRM, nhanh chóng chuyển tin nhắn XML thành JSON để sử dụng cho frontend hiện đại hoặc backend Node.js.
  • Phân tích nguồn cấp RSS / Atom thành JSON, thuận tiện hiển thị trên Web frontend, tổng hợp vào trình đọc feed thống nhất, hoặc nhập vào cơ sở dữ liệu.
  • Đọc tệp cấu hình XML của ứng dụng Java như Spring, Tomcat, Apache (web.xml, applicationContext.xml), sau khi chuyển thành JSON thì dùng jq truy vấn hoặc nhập vào công cụ khác.
  • Chuyển phản hồi XML của giao thức SOAP 1.1/1.2 thành JSON, kết hợp với các thư viện Node.js như jsonwebtoken, lodash để xử lý tiếp theo.
  • Phân tích các tập lệnh xây dựng như pom.xml của Maven, build.xml của Ant thành JSON, sử dụng cho trực quan hóa siêu dữ liệu dự án, phân tích phụ thuộc.
  • Chuyển RSS feed, Sitemap XML, nguồn cấp Atom thành định dạng JSON để lưu trữ vào cơ sở dữ liệu hiện đại như Elasticsearch, MongoDB.
  • Khi tích hợp các định dạng dữ liệu tiêu chuẩn ngành dựa trên XML như HL7, ISO 20022 trong ngành y tế, tài chính, chuyển tin nhắn XML thành JSON để microservices hiện đại xử lý.
  • Chuyển các tệp XML liên quan đến SEO của Google Merchant Center, Sitemap.org (sitemap.xml, robots.xml) thành JSON cho trình thu thập dữ liệu hoặc công cụ phân tích sử dụng.

Cách Sử dụng

  1. Dán nội dung XML vào ô nhập liệu bên trái, hoặc nhấp nút "Tải lên" để chọn tệp .xml/.txt, hoặc nhấp "Ví dụ" để tải ví dụ bookstore tích hợp sẵn.
  2. Công cụ sẽ tự động chuyển đổi (debounce 500ms sau khi nhập); xem JSON hoặc YAML sau chuyển đổi ở bên phải, tô sáng cú pháp CodeMirror thuận tiện cho việc đọc.
  3. Nhấp nút JSON / YAML trên thanh công cụ bên phải để chuyển đổi định dạng đầu ra theo thời gian thực. Cũng có thể sử dụng nút "Định dạng" (⇧⌘+F) hoặc "Nén" (⇧⌘+C) để điều chỉnh định dạng đầu vào XML.
  4. Nhấp "Sao chép" để sao chép JSON/YAML vào bảng tạm, hoặc nhấp "Tải xuống" để lưu thành tệp có phần mở rộng tương ứng (output.json / output.yaml / output.xml).
  5. Nếu cần sửa lỗi cú pháp XML, nhấp nút "Sửa" bên cạnh thông báo lỗi (hoặc trong menu thả xuống bên cạnh "Ví dụ" trên thanh công cụ), công cụ sẽ gọi tryFixXML để tự động thêm khai báo XML và bổ sung thẻ tự đóng.
  6. Dán JSON vào mã đích (như định nghĩa TypeScript interface, kiểu phản hồi API, v.v.), hoặc nhập vào dịch vụ backend để xử lý thêm.

Tính năng

  • Phân tích cây DOM thông minh: phân tích XML dựa trên DOMParser gốc của trình duyệt, tự động duyệt cây nút để tạo đối tượng JSON chuẩn, không phụ thuộc.
  • Ánh xạ thuộc tính trực tiếp: thuộc tính XML (như id="1", category="fiction") chuyển trực tiếp thành trường thông thường của đối tượng JSON, không cần tiền tố @.
  • Mảng hóa phần tử lặp: phần tử XML lặp cùng tên tự động gộp thành mảng JSON ({book: [{...}, {...}]}), phù hợp với quy ước cấu trúc dữ liệu phổ biến.
  • Trích xuất text node: nội dung văn bản phần tử tự động lưu vào trường value, được giữ lại song song với thuộc tính và phần tử con.
  • Xuất định dạng kép: một lần nhấp chuyển đổi giữa định dạng kép JSON (prettyPrint thụt lề 2 khoảng trắng) và YAML (thụt lề 2 khoảng trắng, tiền tố danh sách -), thích ứng các tình huống ứng dụng khác nhau.
  • Tự sửa lỗi XML: tích hợp hàm sửa lỗi tryFixXML, tự động thêm khai báo XML bị thiếu, bổ sung thẻ tự đóng như br/hr/img.
  • Định dạng và nén XML: sử dụng thư viện xml-formatter hỗ trợ đầu ra đẹp prettyPrint và đầu ra nén minify (thụt lề 2 khoảng trắng hoặc không khoảng trắng).
  • Chuyển đổi tự động theo thời gian thực: sau khi nhập XML tự động chuyển đổi với debounce 500ms, không cần nhấp thủ công, đầu ra cập nhật đồng bộ theo thời gian thực.
  • Tô sáng cú pháp kép JSON/XML: bên trái CodeMirror tô sáng cú pháp XML, bên phải chuyển đổi tô sáng JSON hoặc YAML tùy định dạng.
  • Hệ thống phím tắt hoàn chỉnh: 6 phím tắt thường dùng (định dạng/nén/chuyển đổi/tải lên/tải xuống/xóa), hỗ trợ macOS và Windows/Linux.
  • Sao chép và tải xuống: một lần nhấp sao chép vào bảng tạm, hoặc tải xuống dưới dạng tệp output.json/output.yaml/output.xml chuẩn (tự động chọn phần mở rộng theo định dạng hiện tại).
  • Xử lý cục bộ thuần túy trên trình duyệt: tất cả phân tích XML, duyệt DOM, tuần tự hóa JSON đều hoàn thành trong JavaScript của trình duyệt, dữ liệu gốc không tải lên, DOMParser được trình duyệt cung cấp nguyên bản.

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

Làm sao để chuyển XML sang định dạng JSON?

Dán nội dung XML vào ô nhập liệu bên trái, công cụ sẽ sử dụng DOMParser gốc của trình duyệt để phân tích XML và tự động chuyển đổi cây DOM thành đối tượng JSON chuẩn. Nút gốc được bọc bằng { [tagName]: {...} }, thuộc tính ánh xạ thành trường thông thường (không có tiền tố @), văn bản phần tử lưu vào trường value, các phần tử cùng tên lặp lại tự động gộp thành mảng. Tự động chuyển đổi sau 500ms, không cần nhấp chuột thủ công.

Thuộc tính và text node trong XML được chuyển đổi như thế nào?

Công cụ này sử dụng chế độ ánh xạ trực quan: thuộc tính XML được ánh xạ trực tiếp thành trường thông thường của đối tượng JSON (ví dụ <book id="1"> chuyển thành {id: "1", ...}), không sử dụng tiền tố @; nội dung văn bản của phần tử lưu vào trường value (như <title>Great Gatsby</title> chuyển thành {value: "Great Gatsby"}). Khi thuộc tính và văn bản cùng tồn tại, cả hai được đặt cạnh nhau trong cùng một đối tượng.

Nhiều phần tử cùng tên lặp lại trong XML có tự động thành mảng JSON không?

Có. Công cụ tự động phát hiện các thẻ phần tử lặp lại dưới cùng một phần tử cha (như 3 thẻ <book> trong <bookstore>), và gộp chúng thành mảng JSON. Ví dụ <bookstore><book>...</book><book>...</book></bookstore> sẽ trở thành {bookstore: {book: [{...}, {...}]}}. Quy ước này phù hợp với cấu trúc dữ liệu phổ biến nhất trong xử lý XML.

Text node thuần túy được xử lý như thế nào?

Khi phần tử XML không có thuộc tính mà chỉ có nội dung văn bản, công cụ trả về trực tiếp chuỗi văn bản (như <name>Alice</name> chuyển thành "Alice"). Khi phần tử đồng thời có thuộc tính và văn bản, thuộc tính và văn bản đặt cạnh nhau trong cùng một đối tượng ({attr: "...", value: "..."}). Khi phần tử có phần tử con, các phần tử con trở thành trường đối tượng, nội dung văn bản được gộp vào trường value.

XML không đúng định dạng (như thiếu thẻ đóng) có thể chuyển đổi được không?

Có thể. Công cụ tích hợp sẵn hàm sửa lỗi tryFixXML, tự động thêm khai báo XML bị thiếu (<?xml version="1.0" encoding="UTF-8"?>), và tự động bổ sung / cho các thẻ tự đóng phổ biến như br, hr, img. Thiết kế này cải thiện đáng kể khả năng tương thích với các hệ thống cũ và API bên thứ ba không chuẩn.

Hỗ trợ những loại tệp XML nào?

Hỗ trợ tệp .xml và .txt (mã hóa UTF-8). Nhấp nút "Tải lên" để chọn tệp cục bộ, công cụ đọc thông qua FileReader API gốc của trình duyệt, không tải lên máy chủ. Sau khi tải lên thành công, nội dung tự động điền vào ô nhập liệu và kích hoạt chuyển đổi tự động.

Có thể xuất đồng thời JSON và YAML không?

Có thể. Công cụ hỗ trợ xuất định dạng kép JSON và YAML. Nhấp nút chuyển đổi JSON/YAML trên thanh công cụ bên phải để chuyển đổi định dạng đầu ra theo thời gian thực. Định dạng JSON có prettyPrint 2 khoảng trắng; định dạng YAML sử dụng thụt lề 2 khoảng trắng chuẩn, tiền tố danh sách -, ngăn cách cặp khóa-giá trị :, có thể sử dụng trực tiếp cho các tình huống cấu hình như Kubernetes, Docker Compose, Ansible.

Tên tệp tải xuống là gì?

Tự động chọn phần mở rộng dựa trên định dạng đầu ra hiện tại: khi chọn định dạng JSON thì tải xuống output.json, khi chọn định dạng YAML thì tải xuống output.yaml, khi có nhập liệu nhưng chưa chuyển đổi thì tải xuống output.xml (giữ nguyên định dạng gốc). Tất cả tệp đều mã hóa UTF-8, có thể được đọc trực tiếp bởi trình phân tích cú pháp định dạng tương ứng.

Các phím tắt là gì?

Công cụ hỗ trợ các phím tắt sau: người dùng macOS ⇧⌘+F để định dạng, ⇧⌘+C để nén, ⇧⌘+T để chuyển đổi, ⇧⌘+O để tải lên, ⇧⌘+D để tải xuống, ⇧⌘+K để xóa; người dùng Windows/Linux dùng Ctrl thay cho ⌘. Tổng cộng 6 phím tắt bao phủ toàn bộ quy trình làm việc.

Có hỗ trợ XML namespace (không gian tên) không?

Công cụ này phân tích XML dựa trên DOMParser, hỗ trợ nguyên bản XML namespace (xmlns). Tiền tố namespace sẽ được giữ lại trong JSON như một phần của tên phần tử, ví dụ <svg:circle> sẽ trở thành {"svg:circle": {...}}. Nếu muốn truy cập phần tử xuyên không gian tên, cần nhận diện thông qua tiền tố namespace ở phía phân tích JSON.

Có hỗ trợ đoạn CDATA không?

Có hỗ trợ. Nội dung trong đoạn CDATA (<![CDATA[...]]>) sẽ được DOMParser tự động gộp vào textContent của phần tử, công cụ sẽ trích xuất nó vào trường value của JSON giống như xử lý text node thông thường. Nhưng vì CDATA là loại nút XML chứ không phải chuỗi, CDATA gốc và văn bản thông thường không thể phân biệt trong đầu ra JSON.

Hỗ trợ kích thước tệp đầu vào là bao nhiêu?

Về lý thuyết không có giới hạn cứng, bị hạn chế bởi bộ nhớ trình duyệt. Thông thường XML trong khoảng 1-2 MB có thể xử lý mượt mà; tệp lớn hơn có thể chậm hơn do mức sử dụng bộ nhớ của DOMParser lớn. Nếu xử lý tin nhắn SOAP lớn hoặc RSS feed bị giật lag, khuyến nghị nên tinh gọn hoặc tách nhỏ trước trong trình soạn thảo XML cục bộ.

Xử lý sự cố

Phân tích JSON báo lỗi 'unclosed token'?

Nguyên nhân thường là XML thiếu thẻ đóng, dấu ngoặc kép thuộc tính không thành cặp, hoặc ký tự đặc biệt chưa được thoát. Nhấp nút "Sửa" bên cạnh thông báo lỗi để gọi tryFixXML tự động thêm khai báo XML, bổ sung thẻ tự đóng. Nếu vẫn không thể phân tích, kiểm tra thủ công cấu trúc XML hoặc xem kết quả phân tích bằng document.documentElement.outerHTML trong công cụ dành cho nhà phát triển của trình duyệt.

Thứ tự thuộc tính trong JSON không nhất quán với trong XML?

Tiêu chuẩn JSON không đảm bảo thứ tự thuộc tính, công cụ ánh xạ theo thứ tự mã nguồn của thuộc tính phần tử. Nếu nghiệp vụ nhạy cảm với thứ tự, khuyến nghị sử dụng toPairs của Lodash hoặc công cụ tương tự để xây dựng lại thành mảng có thứ tự trong JSON sau phân tích. Nhưng đại đa số công cụ JavaScript (V8, SpiderMonkey) sẽ giữ lại khóa chuỗi theo thứ tự chèn.

Phần tử cùng tên chỉ có một thì không thành mảng, xử lý sao?

Công cụ hiện tại chỉ chuyển thành mảng khi phát hiện phần tử lặp cùng tên; nếu chỉ có một phần tử cùng tên, công cụ sẽ giữ lại như một đối tượng đơn lẻ. Nếu bạn cần ép mảng hóa (ngay cả khi chỉ có 1 phần tử), có thể sau khi chuyển đổi thì dùng castArray của lodash để bọc: [result].flat() hoặc dùng JSON Schema xác minh để ép mảng.

Làm sao để giữ lại ký tự đặc biệt trong thuộc tính XML (như <, &)?

DOMParser sẽ tự động giải thoát giá trị thuộc tính, công cụ sẽ giữ lại nội dung sau giải thoát. Nếu trong XML gốc viết là &lt;, sau khi chuyển đổi giá trị trong JSON là <. Đây là hành vi tiêu chuẩn XML, phù hợp với kỳ vọng người dùng. Nếu cần giữ lại dạng thoát gốc, có thể sử dụng thư viện xml-formatter hoặc XML tokenizer tự triển khai thay thế DOMParser.

Tại sao đầu ra YAML không có thông tin kiểu?

Bản thân định dạng YAML hỗ trợ kiểu (như 12 là number, true là boolean, null là null), nhưng bộ chuyển đổi YAML đơn giản của công cụ này tuần tự hóa tất cả giá trị thành chuỗi. Nếu cần giữ lại kiểu, có thể sử dụng thư viện YAML trưởng thành như js-yaml, hoặc ở phía phân tích xác minh thông qua JSON Schema rồi mới ép kiểu.

Làm sao để xử lý đầu vào chứa chỉ thị xử lý XML (PI)?

DOMParser mặc định giữ lại chỉ thị xử lý XML (như <?xml-stylesheet ...?>) thành nút ProcessingInstruction của document.firstChild. Công cụ này hiện tại chỉ duyệt nút Element, chỉ thị xử lý sẽ bị bỏ qua. Nếu cần giữ lại, có thể trích xuất thủ công document.firstChild.nodeValue trước khi sử dụng.

Tệp .json tải xuống mở bằng gì?

Tệp tải xuống output.json là tệp JSON chuẩn mã hóa UTF-8, có thể mở bằng bất kỳ trình soạn thảo văn bản nào (VS Code, Sublime, Notepad++) hoặc công cụ JSON chuyên nghiệp (jq, JSDoc). Có thể kéo thả trực tiếp vào trình duyệt để xem cấu trúc định dạng. Hầu như tất cả các ngôn ngữ lập trình như JavaScript, Python, Node.js, Java, Go đều tích hợp sẵn trình phân tích JSON.

Thuật ngữ

XML (eXtensible Markup Language)
Ngôn ngữ đánh dấu mở rộng, được W3C ban hành năm 1998. Sử dụng thẻ dấu ngoặc nhọn để mô tả cấu trúc và nội dung dữ liệu, hỗ trợ không gian tên, xác thực Schema, chuyển đổi XSLT. Là định dạng chuẩn của SOAP Web Service, Office Open XML, RSS, Atom, v.v.
JSON (JavaScript Object Notation)
Định dạng trao đổi dữ liệu nhẹ, dựa trên cú pháp đối tượng JavaScript nhưng độc lập với ngôn ngữ lập trình. Hỗ trợ sáu kiểu cơ bản: đối tượng ({}), mảng ([]), chuỗi, số, boolean, null. Là tiêu chuẩn thực tế của Web API hiện đại, cơ sở dữ liệu NoSQL, hệ sinh thái JavaScript.
DOMParser
API gốc của trình duyệt (tiêu chuẩn W3C DOM), phân tích chuỗi XML hoặc HTML thành cây DOM. Tất cả các trình duyệt hiện đại (Chrome, Firefox, Safari, Edge) đều tích hợp sẵn hỗ trợ, không cần thêm thư viện bên thứ ba. Dựa trên cây DOM có thể thuận tiện duyệt, truy vấn, sửa đổi nội dung XML.
xml-formatter
Thư viện JavaScript nhẹ (dưới 30KB), dùng để định dạng (prettyPrint) và nén (minify) tài liệu XML. Hỗ trợ các tùy chọn như thụt lề tùy chỉnh, ký tự ngắt dòng, collapseContent. Công cụ này sử dụng nó để cung cấp tính năng định dạng và nén XML.
Ánh xạ thuộc tính (attribute mapping)
Cách ánh xạ thuộc tính phần tử XML thành trường đối tượng JSON. Công cụ này sử dụng chế độ ánh xạ trực tiếp: <book id="1"> chuyển thành {id: "1"}, không sử dụng tiền tố @. Tạo ra cấu trúc JSON sạch hơn, định nghĩa TypeScript interface đơn giản hơn.
Mảng hóa phần tử lặp
Các phần tử lặp cùng tên trong XML (như nhiều <item>) tự động gộp thành mảng JSON. Đây là quyết định thiết kế quan trọng của chuyển đổi XML sang JSON, phù hợp với ngữ nghĩa danh sách của JSON, tránh mất dữ liệu.
Trường value
Tên trường cho nội dung văn bản phần tử XML theo quy ước của công cụ này. Phần tử <title>Great Gatsby</title> chuyển thành {value: "Great Gatsby"}. Nếu phần tử đồng thời có thuộc tính và văn bản, thuộc tính và value đặt cạnh nhau trong cùng một đối tượng.
YAML (YAML Ain't Markup Language)
Định dạng tuần tự hóa dữ liệu thân thiện với con người, được sử dụng rộng rãi trong các tệp cấu hình Kubernetes, Docker Compose, Ansible, GitHub Actions. Công cụ này hỗ trợ xuất YAML đơn giản, thụt lề 2 khoảng trắng, tiền tố danh sách -, ngăn cách cặp khóa-giá trị :.
SOAP (Simple Object Access Protocol)
Giao thức truyền thông Web service dựa trên XML. Tin nhắn SOAP được bao bọc bởi SOAP envelope (không gian tên XML), chứa bên trong header và body (payload XML). Công cụ này có thể phân tích tin nhắn SOAP thành JSON cho dịch vụ JavaScript hiện đại sử dụng.
RSS / Atom feed
Định dạng đăng ký nội dung dựa trên XML. Định dạng RSS 2.0 tổ chức nội dung theo cấu trúc <rss><channel><item>, Atom sử dụng cấu trúc <feed><entry>. Công cụ này chuyển RSS/Atom thành mảng JSON thuận tiện hiển thị trên frontend hoặc tổng hợp vào cơ sở dữ liệu.
XML namespace (không gian tên)
Cơ chế tránh xung đột tên phần tử thông qua thuộc tính xmlns, định dạng như xmlns:prefix="uri". DOMParser hỗ trợ nguyên bản không gian tên, tiền tố không gian tên sẽ được giữ lại trong JSON như một phần của tên phần tử.
Đoạn CDATA
Cú pháp đặc biệt trong XML <![CDATA[...]]>, dùng để nhúng văn bản chứa ký tự đặc biệt (như <, >, &) trong phần tử mà không cần thoát. DOMParser sẽ gộp nội dung CDATA vào textContent của phần tử, công cụ xử lý như văn bản thông thường.
tryFixXML
Hàm sửa lỗi XML tích hợp sẵn của công cụ này, tự động thêm khai báo XML bị thiếu (<?xml version="1.0" encoding="UTF-8"?>), và bổ sung / cho các thẻ tự đóng phổ biến như br, hr, img. Xử lý dữ liệu bẩn từ hệ thống cũ hoặc giao diện bên thứ ba không chuẩn.
prettyPrint
Chế độ đầu ra của thư viện xml-formatter. Khi bật, XML tạo ra tự động thêm thụt lề và ngắt dòng (như thụt lề 2 khoảng trắng), dễ đọc cao; khi tắt xuất ra nhỏ gọn không khoảng trắng (minify).

Quy tắc ánh xạ từ phần tử XML sang trường JSON

Quy tắc ánh xạ chuyển đổi phân tích dựa trên DOMParser của công cụ này:

Cấu trúc XMLVí dụ XMLĐầu ra JSONQuy tắc ánh xạ
element with attrs<book id="1" category="fiction"/>{"id": "1", "category": "fiction"}Thuộc tính ánh xạ trực tiếp thành trường đối tượng (không tiền tố @)
element with text<title>Great Gatsby</title>{"value": "Great Gatsby"}Nội dung văn bản phần tử lưu vào trường value
attrs + text<price currency="USD">12.99</price>{"currency": "USD", "value": "12.99"}Thuộc tính và văn bản đặt cạnh nhau trong cùng đối tượng
no attrs, no text<book id="1"/>{"id": "1"}Chỉ có thuộc tính, không có trường value
nested elements<book><title>Gatsby</title></book>{"title": {"value": "Gatsby"}}Phần tử con chuyển thành trường đối tượng
repeated elements<books><book/><book/></books>{"book": [{}, {}]}Phần tử lặp cùng tên tự động gộp thành mảng
root element<bookstore>...</bookstore>{"bookstore": {...}}Nút gốc bọc bằng { [tagName]: ... }
namespace prefix<svg:circle/>{"svg:circle": {...}}DOMParser hỗ trợ nguyên bản không gian tên

So sánh định dạng đầu ra JSON vs YAML

Đặc điểm và tình huống áp dụng của hai định dạng đầu ra mà công cụ này hỗ trợ:

Khía cạnhJSONYAMLGhi chú
Cú pháp{ } : [ ] ngắn gọnThụt lề + - danh sáchJSON ngắn gọn hơn, YAML dễ đọc hơn
Kiểu dữ liệunumber/bool/null nguyên bảnnumber/bool/null nguyên bảnCả hai đều giữ lại kiểu
Thụt lề2 khoảng trắng2 khoảng trắngCông cụ này thống nhất sử dụng 2 khoảng trắng
Mảng[1, 2, 3]- 1\n- 2\n- 3JSON dùng ngoặc vuông, YAML dùng gạch ngang
Chú thíchKhông hỗ trợ (tiêu chuẩn)# chú thíchYAML hỗ trợ chú thích
Khả năng đọcTrung bình (nhiễu ngoặc)Cao (gần ngôn ngữ tự nhiên)YAML khả năng đọc tốt hơn
Tình huống sử dụngREST API, front-backendK8s, Docker, CI/CDWeb dùng JSON, cấu hình dùng YAML

So sánh định dạng XML và JSON

So sánh hai định dạng dữ liệu trên các khía cạnh khác nhau, giúp hiểu khi nào chọn XML hoặc JSON:

Khía cạnhXMLJSONGhi chú
Cú pháp< > </> dài dòng{ } : [ ] ngắn gọnCú pháp JSON ngắn gọn hơn, thẻ XML dài dòng nhưng dễ đọc cao
Kiểu dữ liệuToàn bộ là chuỗinumber/bool/null nguyên bảnJSON giữ lại kiểu, XML cần dựa vào schema để xác minh kiểu
MảngPhần tử lặp <i>1</i><i>2</i>[1,2,3] nguyên bảnMảng JSON ngắn gọn, mảng XML phụ thuộc quy ước đặt tên
Chú thích<!-- chú thích -->Không hỗ trợ (tiêu chuẩn)XML hỗ trợ chú thích, JSON tiêu chuẩn không hỗ trợ
Không gian tênhỗ trợ xmlnsKhông cóXML tránh xung đột đặt tên trong tài liệu lớn
Xác thực SchemaXSD / DTDJSON SchemaCả hai đều có cơ chế xác thực schema trưởng thành
Hiệu năng phân tíchChậm hơn (chi phí thẻ)Nhanh hơn (~3-5 lần)Phân tích JSON đơn giản hơn, phân tích XML phức tạp hơn
Tình huống sử dụngSOAP, doanh nghiệp, OfficeREST API, front-backendWeb hiện đại dùng JSON, doanh nghiệp truyền thống dùng XML

Privacy & Security

Tất cả các thao tác của công cụ chuyển đổi XML sang JSON này hoàn toàn hoàn thành cục bộ trên trình duyệt của bạn: phân tích XML (dựa trên DOMParser gốc của trình duyệt), duyệt cây DOM, tuần tự hóa JSON, chuyển đổi YAML đều thực thi thông qua JavaScript của trình duyệt ở phía máy khách, xml-formatter là phụ thuộc bên ngoài duy nhất (gói npm dưới 30KB). Dữ liệu XML gốc không tải lên bất kỳ máy chủ nào. Việc tải tệp lên sử dụng FileReader API gốc của trình duyệt đọc trực tiếp vào bộ nhớ, không đi qua bất kỳ dịch vụ trung gian nào. Không sử dụng Cookie theo dõi, không thu thập bất kỳ dữ liệu đầu vào hoặc sử dụng nào của người dùng. Sau khi đóng hoặc làm mới trang, tất cả nội dung đầu vào và đầu ra tự động xóa khỏi bộ nhớ. Phù hợp xử lý tin nhắn XML chứa dữ liệu nghiệp vụ nhạy cảm (thông tin đơn hàng, thông tin xác thực người dùng, phản hồi API doanh nghiệp).

Authoritative References