Định dạng XML là gì?
XML (Extensible Markup Language) là định dạng văn bản tiêu chuẩn hóa bởi W3C dành cho tài liệu có cấu trúc và trao đổi dữ liệu. Định dạng — còn gọi là pretty-printing hay beautifying — lấy một nguồn XML hợp lệ và thụt lề lại sao cho mỗi phần tử, thuộc tính, chú thích, processing instruction và đoạn CDATA dễ quét. Cây tài liệu đã phân tích được giữ nguyên hoàn toàn; chỉ khoảng trắng giữa các phần tử thay đổi.
Định dạng XML hoạt động như thế nào?
Đầu vào của bạn được xử lý hoàn toàn trong trình duyệt bằng các API DOMParser và XMLSerializer nguyên bản cùng một bộ thụt lề đệ quy tùy biến. Các bước chính:
- Đầu vào của bạn được đọc nguyên văn từ textarea — từng byte bạn dán đều ở trong bộ nhớ cục bộ.
- Trình duyệt phân tích nó bằng
new DOMParser().parseFromString(text, 'application/xml'). Nếu đầu vào không hợp lệ, bộ phân tích chèn một nút<parsererror>mà nội dung text mang theo gợi ý dòng và cột của engine — chúng được hiển thị nguyên văn trong dải lỗi. - Khi phân tích thành công, một bộ thụt lề tùy biến đi sâu trước trong cây DOM, phát ra mỗi phần tử, tập thuộc tính, đoạn CDATA, chú thích và processing instruction trên dòng riêng ở độ sâu hiện tại. Các thẻ void tự đóng được tôn trọng khi tùy chọn bật.
- Chế độ rút gọn đảo chiều quy trình:
XMLSerializer().serializeToString(doc)phát ra dạng một dòng, rồi một regex được bảo vệ loại bỏ khoảng trắng giữa các phần tử mà không chạm vào văn bản bên trong khối CDATA hay nút văn bản không phải khoảng trắng. - Kết quả được ghi vào textarea chỉ đọc, dải lỗi được xóa, và nút Tải về đóng gói kết quả thành tệp
.xmlmà bạn có thể gửi đi hoặc đính kèm vào một ticket.
Vì sao pretty-print XML bằng công cụ này?
- Quyền riêng tư: mọi lượt phân tích, định dạng và rút gọn đều diễn ra trong trình duyệt của bạn. XML không bao giờ đến máy chủ của chúng tôi — không tải lên, không telemetry, không tài khoản.
- Lỗi chính xác: khi đầu vào sai cú pháp, bộ phân tích trả về đúng dòng và cột mà chính engine trình duyệt báo, không phải đoán suy đoán — cùng những con số bạn sẽ thấy trong DevTools.
- Round-trip trung thực: định dạng rồi rút gọn và bạn nhận lại bản byte-tương đương tài liệu gốc (tính cả tùy chọn khai báo XML) — định dạng không re-canonicalise namespace hay sắp xếp lại thuộc tính.
- Nhanh: DOMParser nguyên bản cộng với bộ thụt lề khoảng 60 dòng xử lý ngay các envelope SOAP hàng megabyte và đoạn OOXML, không cần thư viện bên ngoài.
Các ứng dụng phổ biến của định dạng XML là gì?
Pretty-printing XML xuất hiện trong xuất bản web, tích hợp doanh nghiệp và lưu trữ dữ liệu:
- Kiểm tra feed RSS / Atom: dán nội dung podcast hoặc feed tin tức để xác nhận channel metadata, thứ tự item và namespace prefix trước khi xuất bản.
- Debug SOAP: định dạng một envelope sao chép từ Wireshark hay log SOAP client để Header, Body và Fault nhìn rõ ngay lập tức.
- Kiểm toán sitemap: thụt lề lại sitemap.xml lấy từ đối thủ hoặc site staging của bạn để đếm entry và xác nhận hreflang alternates cho từng URL.
Ví dụ về định dạng XML trông như thế nào?
Dán <feed><entry><title>Hello</title></entry></feed> gồm 3 phần tử và nhấn Định dạng với tùy chọn thụt lề 2 dấu cách sẽ cho ra tài liệu bốn dòng, mỗi phần tử trên dòng riêng, được thụt lề theo độ sâu. Chuyển sang Rút gọn trên cùng đầu vào sẽ thu nó lại thành chuỗi byte gốc. Round-trip không mất mát cho mọi tài liệu hợp lệ.
Công cụ này có chạy ngoại tuyến không?
Có. Quy trình định dạng và rút gọn là DOMParser + XMLSerializer thuần túy cộng một bộ thụt lề đệ quy nhỏ, tất cả chạy trong tab trình duyệt. Không gì được tải lên, không service worker nào ủy quyền đầu vào của bạn, và trang không gửi yêu cầu mạng nào cho bước định dạng. Lưu lượng ra duy nhất là các tài nguyên tải trang chuẩn (CSS, font, analytics) — XML của bạn không bao giờ đến Ultim8Soft.
Định dạng có thay đổi tài liệu không?
Không thay đổi ngữ nghĩa. Định dạng chỉ viết lại khoảng trắng giữa các phần tử. Tên phần tử, giá trị thuộc tính, nội dung văn bản, payload CDATA, chú thích và processing instruction được giữ nguyên từng byte. Khai báo namespace và prefix giữ y như đầu vào — bộ định dạng không re-canonicalise hay sắp xếp lại thuộc tính. Kết quả phân tích về cùng cây DOM với đầu vào, tính cả tùy chọn bật/tắt khai báo XML.
CDATA / chú thích / processing instruction được xử lý ra sao?
Mỗi loại được phát ra nguyên văn trên dòng riêng ở độ sâu thụt lề hiện tại. Payload CDATA bọc trong <![CDATA[…]]> không thụt lề lại bên trong — đặc tả nói nội dung CDATA là opaque, nên bộ định dạng không bao giờ chạm vào. Chú thích dùng <!-- … -->; processing instruction dùng <?target data?>. Cả ba sống sót qua round-trip định dạng → rút gọn → định dạng với nội dung nguyên vẹn.
Khác biệt giữa định dạng và rút gọn XML là gì?
Định dạng mở rộng khoảng trắng để con người đọc cây tài liệu; rút gọn loại bỏ chúng cho vận chuyển và lưu trữ. Cả hai thao tác trên DOM đã phân tích, không phải trên chuỗi byte thô, nên round-trip định dạng → rút gọn trên một tài liệu hợp lệ cho ra bản byte-tương đương của bản rút gọn ban đầu. Dùng hướng định dạng khi bạn cần đọc hay diff một payload XML, và hướng rút gọn khi muốn gửi nó qua một API gateway tính phí hoặc nhúng vào một tài liệu khác.
Trình định dạng XML này dùng cùng parser mà trình duyệt của bạn dùng cho phản hồi AJAX XHR và tài liệu SVG, nên mọi XML hợp lệ — RSS, Atom, SOAP, sitemap, OOXML, SVG — đều round-trip sạch sẽ. Dán bất kỳ XML nào ở trên, sao chép kết quả, hoặc tải về dưới dạng .xml.