XML ↔ JSON / TOML / INI API

Chuyển XML sang JSON và ngược lại, kiểm tra XML hợp lệ kèm dòng và cột lỗi, định dạng đẹp hoặc nén XML, chuyển TOML, INI sang JSON và ngược lại.

POSThttps://apibox.io.vn/v1/xml-convert
Dữ liệu & JSON▶ Dùng thử online

Gửi tài liệu trong xml, json, toml hoặc ini (hoặc gửi body thô kèm from) và chọn to: json, xml, toml, ini, validate, pretty hoặc minify. Khi chuyển XML sang JSON, thuộc tính được giữ với tiền tố (mặc định @_, dùng attribute_prefix=none để bỏ), phần chữ lẫn trong thẻ nằm ở #text; có thể ép mảng cho thẻ lặp lại (array_tags=item,line hoặc always_array=true), giữ đúng thứ tự thẻ (preserve_order=true), bỏ tiền tố namespace (remove_ns=true), giữ CDATA hoặc chú thích. Giá trị mặc định giữ nguyên là chuỗi, trừ khi đặt parse_values=true, nên mã số thuế, số hoá đơn như 0101234567 không bị mất số 0 ở đầu.

Khi chuyển JSON sang XML, khoá bắt đầu bằng tiền tố trở thành thuộc tính, mảng thành các thẻ lặp lại, kết quả được bọc trong root khi cần; XML tạo ra được kiểm tra lại và có cảnh báo nếu tên khoá không hợp lệ làm tên thẻ. validate báo lỗi đầu tiên kèm dòng và cột, cùng thẻ gốc, namespace và số phần tử; pretty / minify thụt lề lại hoặc nén XML (hay JSON), vẫn giữ chú thích, CDATA và chỉ thị xử lý.

An toàn: việc mở rộng entity bị giới hạn (chống "billion laughs"), không bao giờ tải entity bên ngoài (SYSTEM / PUBLIC), độ sâu tối đa 256 cấp và tài liệu tối đa 5 MB. TOML hỗ trợ chuẩn 1.0 trừ số nguyên độ chính xác tuỳ ý (ngày giờ trả về dạng chuỗi, inf / nan cũng là chuỗi); INI hỗ trợ section, chú thích ; / #, giá trị trong ngoặc kép, mảng key[] và section phân cấp bằng dấu chấm (tuỳ chọn).

Tham số

TênVị tríKiểuBắt buộcMặc định
xmlbodystringkhôngTài liệu XML (hoặc gửi json, toml, ini, input + from, hay body thô).
jsonbodyobjectkhôngGiá trị JSON (object hoặc chuỗi JSON) cần chuyển.
tomlbodystringkhôngTài liệu TOML.
inibodystringkhôngTài liệu INI.
frombodystringkhôngxml, json, toml hoặc ini (tự nhận biết nếu bỏ trống).
tobodystringkhôngjsonjson, xml, toml, ini, validate, pretty hoặc minify (mặc định json, hoặc xml khi đầu vào là JSON).
attribute_prefixbodystringkhông@_Tiền tố của khoá thuộc tính; none để không dùng.
attributesbodybooleankhôngtruefalse để bỏ thuộc tính.
text_node_namebodystringkhông#textKhoá chứa phần chữ của thẻ có cả thuộc tính hoặc thẻ con.
array_tagsbodystringkhôngTên các thẻ (cách nhau bằng dấu phẩy) luôn trả về dạng mảng.
always_arraybodybooleankhôngfalseMọi thẻ dưới thẻ gốc đều thành mảng.
parse_valuesbodybooleankhôngfalseChuyển số và boolean (XML, INI). Số có 0 ở đầu vẫn giữ dạng chuỗi.
preserve_orderbodybooleankhôngfalseKết quả dạng mảng có thứ tự (giữ đúng thứ tự thẻ, nội dung hỗn hợp).
remove_nsbodybooleankhôngfalseBỏ tiền tố namespace (inv:Total → Total).
keep_cdatabodybooleankhôngfalseGiữ phần CDATA trong #cdata.
keep_commentsbodybooleankhôngfalseGiữ chú thích trong #comment.
rootbodystringkhôngrootJSON sang XML: tên thẻ gốc bao ngoài.
indentbodynumberkhông2Số khoảng trắng thụt lề khi xuất XML / JSON (0 = một dòng).
declarationbodybooleankhôngtrueJSON sang XML: thêm <?xml version="1.0" encoding="UTF-8"?>.
nested_sectionsbodybooleankhôngfalseINI: [a.b] thành object lồng nhau.

Ví dụ

curl -X POST "https://apibox.io.vn/v1/xml-convert" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"xml":"<invoice id=\"HD001\"><buyer>Công ty A</buyer><item><name>Pen</name><qty>2</qty></item><item><name>Book</name><qty>1</qty></item></invoice>"}'

Kết quả trả về

{
  "from": "xml",
  "to": "json",
  "root": "invoice",
  "json": {
    "invoice": {
      "buyer": "Công ty A",
      "item": [
        {
          "name": "Pen",
          "qty": "2"
        },
        {
          "name": "Book",
          "qty": "1"
        }
      ],
      "@_id": "HD001"
    }
  }
}

Ứng dụng

  • Đọc file XML hoá đơn điện tử, tờ khai thuế, BHXH dưới dạng JSON
  • Gửi dữ liệu JSON sang hệ thống SOAP / XML cũ
  • Kiểm tra file XML người dùng tải lên và chỉ đúng dòng bị lỗi
  • Chuyển file cấu hình giữa TOML, INI và JSON

Hỏi đáp

Vì sao số được trả về dạng chuỗi?

XML không có kiểu dữ liệu, và các mã như 0101234567 phải giữ số 0 ở đầu. Thêm parse_values=true để nhận số và boolean.

Làm sao để thẻ lặp lại luôn là mảng?

Liệt kê tên thẻ trong array_tags (ví dụ array_tags=HHDVu), hoặc dùng always_array=true cho mọi thẻ dưới thẻ gốc.

Xử lý DOCTYPE / entity có an toàn không?

Có: entity nội bộ chỉ được mở rộng trong giới hạn nhỏ, phần lồng nhau vượt giới hạn giữ nguyên dạng chữ, entity bên ngoài bị từ chối.

API liên quan

Bắt đầu với 1.000 request miễn phí mỗi tháng. Nhận API key miễn phí →