Tấn Phát Digital

Chuyển XML Sang JSON Online (và JSON Sang XML)

Chuyển XML sang JSON bằng bộ phân tích XML có sẵn của trình duyệt, tùy chỉnh cách ghi thuộc tính, mảng, CDATA, namespace và kiểu số. Chiều ngược lại tạo XML hợp lệ từ JSON. Dữ liệu không rời khỏi máy bạn.

Vì sao XML và JSON không chuyển qua lại hoàn hảo

XML có thuộc tính, thứ tự thẻ, chữ xen giữa thẻ con, chú thích, CDATA và namespace; JSON chỉ có object, mảng và giá trị. Vì vậy một số thông tin phải quy ước lại hoặc bị mất: chữ trong nội dung hỗn hợp bị gom vào một khóa, thứ tự giữa các thẻ khác tên không giữ được, một thẻ xuất hiện một lần ở chế độ tự động sẽ là object chứ không phải mảng, CDATA gộp vào chữ thường sẽ quay về XML dưới dạng chữ đã escape.

Nếu cần kết quả ổn định cho code xử lý, hãy dùng “Luôn là mảng với thẻ” cho các thẻ có thể lặp. Muốn định dạng lại XML trước khi chuyển, dùng XML Formatter; muốn xem JSON kết quả dạng cây, dùng JSON Viewer; cần đổi JSON sang CSV, dùng JSON Converter.

Hợp tác ngay với Tấn Phát Digital

Chúng tôi không chỉ thiết kế website, mà còn giúp doanh nghiệp xây dựng thương hiệu số mạnh mẽ. Cung cấp dịch vụ thiết kế website trọn gói từ thiết kế đến tối ưu SEO. Hãy liên hệ ngay với Tấn Phát Digital để cùng tạo nên những giải pháp công nghệ đột phá, hiệu quả và bền vững cho doanh nghiệp của bạn tại Hồ Chí Minh.

Chuyển XML sang JSON có kiểm soát: thuộc tính, mảng, CDATA, namespace

Công cụ chuyển XML sang JSON này dùng bộ phân tích XML có sẵn trong trình duyệt, nên XML sai cú pháp được báo lỗi rõ ràng thay vì cho ra kết quả nửa vời. Bạn tự quyết định cách ghi thuộc tính, khi nào một thẻ thành mảng, CDATA và namespace xử lý ra sao, có đổi chuỗi số sang kiểu số hay không. Chiều ngược lại tạo XML hợp lệ từ JSON, tự escape ký tự đặc biệt và sửa tên thẻ không hợp lệ.

Tính năng nổi bật

  • Phân tích XML bằng DOMParser của trình duyệt, báo lỗi cú pháp kèm dòng và cột khi trình duyệt cung cấp
  • Thuộc tính ghi với tiền tố tùy chọn (@id, _id...) hoặc gom chung vào một object như _attr
  • Mảng tự động khi thẻ lặp lại, chế độ mọi phần tử con đều là mảng, hoặc chỉ định danh sách thẻ luôn là mảng
  • CDATA gộp vào nội dung chữ hoặc tách riêng khóa #cdata; tùy chọn giữ chú thích và khai báo xmlns
  • Namespace: giữ tiền tố (soap:Body) hoặc chỉ lấy tên cục bộ (Body)
  • Đổi số và true/false sang kiểu JSON chỉ khi không mất thông tin: 007, 1.50, mã số thuế giữ nguyên dạng chuỗi
  • Chiều JSON sang XML: chọn tên thẻ gốc, tên thẻ phần tử mảng, thụt lề, dòng khai báo; escape & < > " và ký tự xuống dòng trong thuộc tính
  • Tự sửa tên thẻ không hợp lệ (bắt đầu bằng số, có dấu cách), bỏ ký tự điều khiển cấm trong XML 1.0 và báo lại từng thay đổi

Vì sao cần chọn cách chuyển thay vì bấm một nút là xong

XML và JSON không tương ứng một đối một. XML có thuộc tính, có chữ xen giữa thẻ con, có thứ tự thẻ, có CDATA và namespace; JSON chỉ có object, mảng và giá trị. Mỗi thư viện chọn một quy ước riêng để ghép hai thế giới, và kết quả của thư viện này thường không khớp đoạn code viết cho thư viện kia. Lỗi phổ biến nhất: danh sách sản phẩm có hai phần tử thì ra mảng, có một phần tử thì ra object, code duyệt mảng bị hỏng khi đơn hàng chỉ có một món. Lỗi thứ hai: mã số thuế 0312345678 bị đổi thành số 312345678, mất số 0 đầu. Công cụ này để bạn chọn quy ước phù hợp với phía nhận dữ liệu, xem ngay kết quả, và cảnh báo khi dữ liệu có cấu trúc không chuyển trọn vẹn được.

Lợi ích khi sử dụng

  • Tích hợp API, dịch vụ cũ trả XML (SOAP, RSS, hóa đơn điện tử, sitemap) vào ứng dụng xử lý JSON
  • Có JSON ổn định cho code: thẻ lặp luôn là mảng, mã có số 0 đầu không bị mất
  • Biết trước dữ liệu nào không chuyển trọn vẹn nhờ cảnh báo nội dung hỗn hợp và trùng tên
  • Tạo XML hợp lệ từ JSON để gửi cho hệ thống chỉ nhận XML
  • Dữ liệu nhạy cảm như hóa đơn, thông tin khách hàng không rời khỏi máy
  • Không cần cài thư viện hay viết script chỉ để xem nhanh một file XML dưới dạng JSON

Cách chuyển XML sang JSON

  1. 1Dán XML vào ô bên trái hoặc bấm Mở file để chọn file .xml (tối đa 20 MB).
  2. 2Chọn cách ghi thuộc tính, khóa cho nội dung chữ, cách xử lý CDATA và namespace.
  3. 3Chọn chế độ mảng; nếu có thẻ có thể lặp như sanPham, item, ghi tên vào ô Luôn là mảng với thẻ.
  4. 4Bật Đổi số và true/false nếu phía nhận cần kiểu số, sau đó đọc kết quả JSON và các cảnh báo bên dưới.
  5. 5Bấm Sao chép hoặc Tải file .json. Muốn chuyển ngược, chọn JSON sang XML hoặc bấm Đổi chiều.

Quy ước chuyển mặc định và ví dụ

Mặc định, thuộc tính có tiền tố @, nội dung chữ nằm ở khóa #text khi phần tử có cả thuộc tính hoặc thẻ con, phần tử chỉ có chữ thành giá trị chuỗi trực tiếp, thẻ lặp lại thành mảng. Ví dụ phần tử sanPham có thuộc tính sku="A01", các thẻ con ten là Áo sơ mi, soLuong là 2, donGia là 350000 sẽ thành {"sanPham":{"@sku":"A01","ten":"Áo sơ mi","soLuong":"2","donGia":"350000"}}. Khi bật Đổi số và true/false, soLuong thành 2 và donGia thành 350000 dạng số. Thẻ gốc luôn được giữ làm khóa ngoài cùng để không mất tên phần tử gốc.

Vì sao chuyển đổi XML và JSON không phải lúc nào cũng khứ hồi được

Một số thông tin của XML không có chỗ trong JSON. Nội dung hỗn hợp như phần tử p gồm Xin, thẻ b chứa chào, rồi bạn: JSON gom chữ vào #text và thẻ con vào khóa b, thành {"p":{"b":"chào","#text":"Xin bạn"}}, vị trí của chữ so với thẻ con bị mất, chuyển ngược lại sẽ ra Xin bạn đứng trước thẻ b. Thứ tự giữa các thẻ khác tên (a, b, a) cũng không giữ được vì các thẻ cùng tên bị gom thành một mảng. Chú thích, khai báo DOCTYPE và processing instruction bị bỏ. CDATA gộp vào chữ thường sẽ quay lại XML dưới dạng chữ đã escape, nội dung như nhau nhưng khác hình thức. Thẻ xuất hiện một lần ở chế độ tự động là object chứ không phải mảng. Công cụ báo số phần tử có nội dung hỗn hợp để bạn biết khi nào cần cẩn thận.

Đổi chuỗi sang số mà không làm hỏng dữ liệu

Trong XML mọi giá trị đều là chữ, nên có đổi sang số hay không là quyết định của người dùng. Công cụ chỉ đổi khi giá trị viết lại từ số đúng bằng chuỗi gốc: 12 thành 12, -3.25 thành -3.25, nhưng 007, 1.50, 1e3, 0312345678 và 12345678901234567890 vẫn giữ là chuỗi, vì đổi sẽ mất số 0 đầu, mất số 0 cuối hoặc vượt độ chính xác của JavaScript. Chỉ true và false viết thường mới thành kiểu boolean; TRUE, Yes, 1 vẫn là chuỗi. Quy tắc bảo thủ này tránh lỗi âm thầm với mã số thuế, số điện thoại, mã bưu chính, mã sản phẩm.

Namespace, xmlns và CDATA

Tài liệu SOAP, hóa đơn điện tử hay RSS mở rộng thường có namespace như soap:Envelope, inv:vat. Giữ tiền tố cho JSON sát với tài liệu gốc; bỏ tiền tố cho khóa ngắn gọn hơn nhưng có thể trùng tên nếu hai namespace dùng cùng tên cục bộ. Các thuộc tính khai báo xmlns có thể giữ hoặc bỏ. CDATA dùng để chứa văn bản có ký tự < và & mà không phải escape; mặc định công cụ gộp nội dung CDATA vào chữ thường, bạn có thể tách riêng vào khóa #cdata để khi chuyển ngược công cụ ghi lại đúng khối CDATA, kể cả khi nội dung chứa chuỗi ]]> (được tách thành hai khối liền nhau).

Chuyển JSON sang XML: tên thẻ và escape

Khóa JSON có thể là bất cứ chuỗi nào, còn tên thẻ XML thì không được bắt đầu bằng số, không có dấu cách hay phần lớn ký hiệu. Công cụ thay ký tự không hợp lệ bằng dấu gạch dưới và thêm gạch dưới trước tên bắt đầu bằng số, ví dụ họ tên thành họ_tên, 1abc thành _1abc, rồi liệt kê mọi tên đã đổi. Chữ tiếng Việt có dấu được phép trong tên thẻ. Giá trị chữ được escape & < >, giá trị thuộc tính escape thêm dấu ngoặc kép, tab và xuống dòng thành &#9; &#10; để không bị chuẩn hóa mất. Ký tự điều khiển mà XML 1.0 cấm bị bỏ kèm cảnh báo. Khóa có tiền tố thuộc tính (mặc định @) thành thuộc tính, khóa #text thành nội dung chữ, mảng thành các thẻ lặp cùng tên. Nếu JSON có nhiều khóa ở ngoài cùng, công cụ bọc trong thẻ gốc do bạn đặt tên.

Giới hạn của công cụ

Công cụ đọc XML bằng bộ phân tích của trình duyệt nên nội dung thông báo lỗi phụ thuộc trình duyệt (thường bằng tiếng Anh). Thực thể khai báo trong DOCTYPE được trình duyệt xử lý theo chính sách riêng, thực thể bên ngoài không được tải. File tối đa 20 MB. Công cụ không kiểm tra XML theo XSD hay DTD, không hỗ trợ XPath. Nội dung hỗn hợp, thứ tự thẻ khác tên, chú thích, processing instruction không chuyển khứ hồi được như đã giải thích ở trên. Muốn định dạng hoặc làm gọn XML trước khi chuyển, hãy dùng XML Formatter.

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

Chuyển XML sang JSON có mất dữ liệu không?

Với XML dạng dữ liệu (thẻ lồng nhau, thuộc tính, giá trị chữ) thì không. Với nội dung hỗn hợp, thứ tự giữa các thẻ khác tên, chú thích và processing instruction thì có mất thông tin, công cụ sẽ cảnh báo khi gặp nội dung hỗn hợp.

Vì sao danh sách có một phần tử lại ra object chứ không phải mảng?

Ở chế độ mảng tự động, chỉ thẻ lặp lại mới thành mảng. Hãy ghi tên thẻ vào ô Luôn là mảng với thẻ, hoặc chọn chế độ mọi phần tử con đều là mảng, để cấu trúc JSON ổn định.

Thuộc tính XML được ghi thế nào trong JSON?

Mặc định là khóa có tiền tố @, ví dụ sku="A01" thành "@sku": "A01". Bạn có thể đổi tiền tố (như _ hay -) hoặc gom mọi thuộc tính vào một object con tên _attr.

Có nên để tiền tố thuộc tính rỗng không?

Được, nhưng nếu một phần tử có thuộc tính và thẻ con cùng tên, hai giá trị sẽ bị gộp thành mảng. Công cụ cảnh báo khi điều đó xảy ra; dùng tiền tố khác rỗng là an toàn hơn.

Vì sao mã số thuế không bị đổi thành số khi bật đổi kiểu?

Vì 0312345678 viết lại từ số sẽ thành 312345678, mất số 0 đầu. Công cụ chỉ đổi khi không mất thông tin, nên mã có số 0 đầu, số có số 0 cuối sau dấu thập phân và số quá lớn đều giữ dạng chuỗi.

Công cụ xử lý CDATA ra sao?

Mặc định nội dung CDATA được gộp vào chữ thường như trình duyệt đọc được. Chọn tách riêng khóa #cdata nếu muốn khi chuyển ngược sang XML vẫn có khối CDATA.

Namespace như soap: có được giữ lại không?

Có, mặc định giữ nguyên tiền tố trong tên khóa, ví dụ soap:Body. Chọn bỏ tiền tố nếu muốn khóa ngắn gọn; thuộc tính khai báo xmlns có thể giữ hoặc bỏ.

XML của tôi bị báo lỗi nhưng mở bằng trình duyệt vẫn thấy?

Trình duyệt hiển thị cả phần XML trước chỗ lỗi. Công cụ yêu cầu toàn bộ tài liệu hợp lệ: đúng một phần tử gốc, thẻ đóng mở khớp nhau, giá trị thuộc tính trong dấu nháy, ký tự & được viết &amp;. Đọc dòng và cột trong thông báo để sửa.

HTML có chuyển sang JSON bằng công cụ này được không?

Chỉ khi HTML đó là XHTML hợp lệ. HTML thông thường có thẻ không đóng như <br> hay thuộc tính không có giá trị nên bộ phân tích XML sẽ báo lỗi.

Chuyển JSON sang XML thì thẻ gốc lấy từ đâu?

Nếu JSON chỉ có một khóa ngoài cùng chứa object, khóa đó làm thẻ gốc. Nếu có nhiều khóa hoặc là mảng, công cụ bọc trong thẻ gốc bạn đặt tên (mặc định root), phần tử mảng dùng tên thẻ item hoặc tên bạn chọn.

Khóa JSON có dấu cách thì thành thẻ XML thế nào?

Ký tự không hợp lệ trong tên thẻ được thay bằng dấu gạch dưới, ví dụ "họ tên" thành họ_tên. Tên bắt đầu bằng số được thêm dấu gạch dưới ở đầu. Công cụ liệt kê mọi tên đã đổi.

File XML của tôi có bị tải lên máy chủ không?

Không. Việc đọc file và chuyển đổi dùng DOMParser và JavaScript ngay trong trình duyệt của bạn.

Công cụ có kiểm tra XML theo XSD không?

Không, công cụ chỉ kiểm tra XML có đúng cú pháp (well-formed). Kiểm tra theo lược đồ XSD hay DTD cần công cụ chuyên dụng.

Từ khóa liên quan

  • chuyển xml sang json
  • xml to json online
  • convert xml to json
  • đổi xml sang json
  • json to xml online
  • chuyển json sang xml
  • xml json converter
  • xml attributes to json
  • xml array json
  • cdata to json
  • soap xml to json
  • đọc file xml
  • xml sang json giữ thuộc tính
  • xml namespace json
  • parse xml javascript
  • domparser xml
  • xml hóa đơn điện tử sang json
  • rss xml to json
  • chuyển đổi xml online

Công cụ Developer Tools liên quan

.env Generator

Tạo file .env và .env.example cho dự án.

.gitignore Generator

Tạo .gitignore cho Node.js, Python, Java.

API Mock Generator

Tạo mock JSON data cho API testing.

API Response Formatter

Format và phân tích API response.

API Tester

Test REST API: GET, POST, PUT, DELETE.

Postman Alternative - API Testing Tool Online với Collections, Environment & File Upload

Postman Alternative miễn phí - Test APIs với Collections, Multiple Environments, Pre-request Scripts, Collection Runner, File Upload (form-data), Tests/Assertions, Code Generation (cURL, JS, Python, Node.js). Browser-based, không cần cài đặt. Save requests, export/import collections, auto-save history. Hỗ trợ Bearer Token, Basic Auth, API Key. Hoàn hảo cho API development và testing.

Swagger API Tester - Test API với OpenAPI/Swagger Spec & Authentication Online

Swagger API Tester miễn phí - Import OpenAPI/Swagger specification và test API endpoints với đầy đủ authentication (Bearer Token/JWT, Basic Auth, API Key). Hỗ trợ OpenAPI 3.0, Swagger 2.0, auto-parse endpoints, parameters, request body. Giao diện như Swagger UI với color-coded methods, grouped endpoints, real-time testing. Hoàn hảo cho API development, testing, debugging secured APIs.

Base Converter

Chuyển đổi Binary, Hex, Base32.

Base64 Encoder

Mã hóa/giải mã Base64.

Binary Converter

Chuyển đổi Decimal, Binary, Hex.

Box Shadow Generator

Tạo CSS box-shadow trực quan.

Chmod Calculator

Tính quyền file Linux.

Dịch vụ của Tấn Phát Digital

Đang xây sản phẩm và cần thêm người làm phần nặng?

Gói giải pháp doanh nghiệp

Nền tảng custom cho ngân hàng, y tế và sàn B2B, chuẩn ISO 27001, GDPR, PCI-DSS, SLA 99.99%.

Từ 50.000.000đXem chi tiết →

Dịch vụ phát triển Blockchain & Web3

Smart contract, dApp và NFT marketplace đa chuỗi, audit bảo mật đầy đủ trước khi lên mainnet.

Từ 50.000.000đXem chi tiết →

Dịch vụ thiết kế website tại Hồ Chí Minh

Website doanh nghiệp, bán hàng và đặt lịch, chuẩn SEO ngay từ cấu trúc, tốc độ tải dưới 3 giây.

Từ 5.000.000đXem chi tiết →

Dịch vụ thiết kế landing page

Trang đích riêng cho từng chiến dịch quảng cáo, tỷ lệ chuyển đổi 3–8%, bàn giao trong 5–21 ngày.

Từ 3.000.000đXem chi tiết →

Tư vấn và báo giá miễn phí trong 24 giờ. Xem toàn bộ dịch vụ

Zalo
Facebook
TAN PHAT DIGITAL
Zalo
Facebook